Reviewers: ,


Please review this at http://codereview.tryton.org/822002/

Affected files:
  M CHANGELOG
  M trytond/ir/__init__.py
  M trytond/ir/ui/view.py
  M trytond/ir/ui/view.xml
  A trytond/ir/view/ui_view_tree_state_form.xml
  A trytond/ir/view/ui_view_tree_state_list.xml
  M trytond/res/ir.xml


Index: CHANGELOG
===================================================================

--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,5 @@
+* Store selection tree state
+
 Version 2.8.0 - 2013-04-22
 * Bug fixes (see mercurial logs for details)
 * Allow to search on target of Reference field

Index: trytond/ir/__init__.py
===================================================================

--- a/trytond/ir/__init__.py
+++ b/trytond/ir/__init__.py
@@ -41,7 +41,7 @@
         View,
         ShowViewStart,
         ViewTreeWidth,
-        ViewTreeExpandedState,
+        ViewTreeState,
         ViewSearch,
         Icon,
         Property,

Index: trytond/ir/ui/view.py
===================================================================

--- a/trytond/ir/ui/view.py
+++ b/trytond/ir/ui/view.py
@@ -15,7 +15,7 @@

 __all__ = [
     'View', 'ShowViewStart', 'ShowView',
-    'ViewTreeWidth', 'ViewTreeExpandedState', 'ViewSearch',
+    'ViewTreeWidth', 'ViewTreeState', 'ViewSearch',
     ]


@@ -291,9 +291,9 @@
             cls.create(to_create)


-class ViewTreeExpandedState(ModelSQL, ModelView):
-    'View Tree Expanded State'
-    __name__ = 'ir.ui.view_tree_expanded_state'
+class ViewTreeState(ModelSQL, ModelView):
+    'View Tree State'
+    __name__ = 'ir.ui.view_tree_state'
     _rec_name = 'model'
     model = fields.Char('Model', required=True)
     domain = fields.Char('Domain', required=True)
@@ -301,20 +301,27 @@
             ondelete='CASCADE')
     child_name = fields.Char('Child Name')
     nodes = fields.Text('Expanded Nodes')
+    selected_nodes = fields.Text('Selected Nodes')

     @classmethod
     def __setup__(cls):
-        super(ViewTreeExpandedState, cls).__setup__()
+        super(ViewTreeState, cls).__setup__()
         cls.__rpc__.update({
-                'set_expanded': RPC(readonly=False),
-                'get_expanded': RPC(),
+                'set': RPC(readonly=False),
+                'get': RPC(),
                 })

     @classmethod
     def __register__(cls, module_name):
-        super(ViewTreeExpandedState, cls).__register__(module_name)
+        cursor = Transaction().cursor
+        table = TableHandler(cursor, cls, module_name)

-        cursor = Transaction().cursor
+        # Migration from 2.8: table name changed
+        table.table_rename(cursor, 'ir_ui_view_tree_expanded_state',
+            cls._table)
+
+        super(ViewTreeState, cls).__register__(module_name)
+
         table = TableHandler(cursor, cls, module_name)
table.index_action(['model', 'domain', 'user', 'child_name'], 'add')

@@ -322,8 +329,12 @@
     def default_nodes():
         return '[]'

+    @staticmethod
+    def default_selected_nodes():
+        return '[]'
+
     @classmethod
-    def set_expanded(cls, model, domain, child_name, nodes):
+    def set(cls, model, domain, child_name, nodes, selected_nodes):
         current_user = Transaction().user
         with Transaction().set_user(0):
             records = cls.search([
@@ -339,10 +350,11 @@
                         'domain': domain,
                         'child_name': child_name,
                         'nodes': nodes,
+                        'selected_nodes': selected_nodes,
                         }])

     @classmethod
-    def get_expanded(cls, model, domain, child_name):
+    def get(cls, model, domain, child_name):
         current_user = Transaction().user
         with Transaction().set_user(0):
             try:
@@ -354,8 +366,10 @@
                         ],
                     limit=1)
             except ValueError:
-                return '[]'
-            return cls(expanded_info).nodes
+                return (cls.default_nodes(), cls.default_selected_nodes())
+            state = cls(expanded_info)
+            return (state.nodes or cls.default_nodes(),
+                state.selected_nodes or cls.default_selected_nodes())


 class ViewSearch(ModelSQL, ModelView):

Index: trytond/ir/ui/view.xml
===================================================================

--- a/trytond/ir/ui/view.xml
+++ b/trytond/ir/ui/view.xml
@@ -69,35 +69,35 @@
         <menuitem parent="menu_ui"
             action="act_view_tree_width_form" id="menu_view_tree_width"/>

-        <record model="ir.ui.view" id="view_tree_expanded_state_form">
-            <field name="model">ir.ui.view_tree_expanded_state</field>
+        <record model="ir.ui.view" id="view_tree_state_form">
+            <field name="model">ir.ui.view_tree_state</field>
             <field name="type">form</field>
-            <field name="name">ui_view_tree_expanded_state_form</field>
+            <field name="name">ui_view_tree_state_form</field>
         </record>
-        <record model="ir.ui.view" id="view_tree_expanded_state_tree">
-            <field name="model">ir.ui.view_tree_expanded_state</field>
+        <record model="ir.ui.view" id="view_tree_state_tree">
+            <field name="model">ir.ui.view_tree_state</field>
             <field name="type">tree</field>
-            <field name="name">ui_view_tree_expanded_state_list</field>
+            <field name="name">ui_view_tree_state_list</field>
         </record>
- <record model="ir.action.act_window" id="act_view_tree_expanded_state">
-            <field name="name">Tree Expanded State</field>
+        <record model="ir.action.act_window" id="act_view_tree_state">
+            <field name="name">Tree State</field>
             <field name="type">ir.action.act_window</field>
-            <field name="res_model">ir.ui.view_tree_expanded_state</field>
+            <field name="res_model">ir.ui.view_tree_state</field>
         </record>
         <record model="ir.action.act_window.view"
-            id="act_view_tree_expanded_state_tree">
+            id="act_view_tree_state_tree">
             <field name="sequence" eval="10"/>
-            <field name="view" ref="view_tree_expanded_state_tree"/>
-            <field name="act_window" ref="act_view_tree_expanded_state"/>
+            <field name="view" ref="view_tree_state_tree"/>
+            <field name="act_window" ref="act_view_tree_state"/>
         </record>
         <record model="ir.action.act_window.view"
-            id="act_view_tree_expanded_state_form">
+            id="act_view_tree_state_form">
             <field name="sequence" eval="20"/>
-            <field name="view" ref="view_tree_expanded_state_form"/>
-            <field name="act_window" ref="act_view_tree_expanded_state"/>
+            <field name="view" ref="view_tree_state_form"/>
+            <field name="act_window" ref="act_view_tree_state"/>
         </record>
-        <menuitem parent="menu_ui" action="act_view_tree_expanded_state"
-            id="menu_view_tree_expanded_state"/>
+        <menuitem parent="menu_ui" action="act_view_tree_state"
+            id="menu_view_tree_state"/>

         <record model="ir.ui.view" id="view_search_form">
             <field name="model">ir.ui.view_search</field>

Index: trytond/ir/view/ui_view_tree_state_form.xml
===================================================================
rename from trytond/ir/view/ui_view_tree_expanded_state_form.xml
rename to trytond/ir/view/ui_view_tree_state_form.xml

--- a/trytond/ir/view/ui_view_tree_expanded_state_form.xml
+++ b/trytond/ir/view/ui_view_tree_state_form.xml
@@ -1,15 +1,17 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<form string="View Tree Expanded State">
+<form string="View Tree State">
     <label name="model"/>
     <field name="model"/>
     <label name="user"/>
     <field name="user"/>
     <label name="domain"/>
     <field name="domain"/>
-    <label name="child_name" />
-    <field name="child_name" />
-    <separator name="nodes" colspan="4" />
+    <label name="child_name"/>
+    <field name="child_name"/>
+    <separator name="nodes" colspan="4"/>
     <field name="nodes" colspan="4"/>
+    <separator name="selected_nodes" colspan="4"/>
+    <field name="selected_nodes" colspan="4"/>
 </form>

Index: trytond/ir/view/ui_view_tree_state_list.xml
===================================================================
rename from trytond/ir/view/ui_view_tree_expanded_state_list.xml
rename to trytond/ir/view/ui_view_tree_state_list.xml

--- a/trytond/ir/view/ui_view_tree_expanded_state_list.xml
+++ b/trytond/ir/view/ui_view_tree_state_list.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
-<tree string="Views Tree Expanded State">
+<tree string="Views Tree State">
     <field name="model"/>
     <field name="domain"/>
     <field name="user"/>

Index: trytond/res/ir.xml
===================================================================

--- a/trytond/res/ir.xml
+++ b/trytond/res/ir.xml
@@ -800,15 +800,15 @@
             <field name="function">trigger_time</field>
         </record>

- <record model="ir.model.access" id="rule_default_view_tree_expanded_state"> - <field name="model" search="[('model', '=', 'ir.ui.view_tree_expanded_state')]" />
+        <record model="ir.model.access" id="rule_default_view_tree_state">
+ <field name="model" search="[('model', '=', 'ir.ui.view_tree_state')]" />
             <field name="perm_read" eval="False" />
             <field name="perm_write" eval="False" />
             <field name="perm_create" eval="False" />
             <field name="perm_delete" eval="False" />
         </record>
- <record model="ir.model.access" id="rule_group_view_tree_expanded_state"> - <field name="model" search="[('model', '=', 'ir.ui.view_tree_expanded_state')]" />
+        <record model="ir.model.access" id="rule_group_view_tree_state">
+ <field name="model" search="[('model', '=', 'ir.ui.view_tree_state')]" />
             <field name="group" ref="res.group_admin" />
             <field name="perm_read" eval="True" />
             <field name="perm_write" eval="True" />



Reply via email to