Reviewers: ,


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

Affected files:
  M trytond/ir/action.py
  M trytond/model/modelview.py


Index: trytond/ir/action.py
===================================================================
--- a/trytond/ir/action.py
+++ b/trytond/ir/action.py
@@ -9,6 +9,7 @@
 from ..transaction import Transaction
 from ..pool import Pool
 from ..exceptions import UserError
+from ..cache import Cache

 EMAIL_REFKEYS = set(('cc', 'to', 'subject'))

@@ -96,7 +97,7 @@
             ], string='Keyword', required=True)
     model = fields.Reference('Model', selection='models_get')
     action = fields.Many2One('ir.action', 'Action',
-            ondelete='CASCADE')
+        ondelete='CASCADE', select=True)

     def __init__(self):
         super(ActionKeyword, self).__init__()
@@ -108,6 +109,12 @@
             'wrong_wizard_model': 'Wrong wizard model!',
         })

+    def init(self, module_name):
+        super(ActionKeyword, self).init(module_name)
+
+        table = TableHandler(Transaction().cursor, self, module_name)
+        table.index_action(['keyword', 'model'], 'add')
+
     def check_wizard_model(self, ids):
         pool = Pool()
         action_wizard_obj = pool.get('ir.action.wizard')
@@ -151,6 +158,12 @@
                         ).fields_view_get.reset()
             except Exception:
                 pass
+            try:
+                pool.get(keyword.model.split(',')[0]
+                    ).view_toolbar_get.reset()
+            except Exception:
+                pass
+        self.get_keyword.reset()
         return super(ActionKeyword, self).delete(ids)

     def create(self, vals):
@@ -163,6 +176,12 @@
                         ).fields_view_get.reset()
             except Exception:
                 pass
+            try:
+                pool.get(vals['model'].split(',')[0]
+                    ).view_toolbar_get.reset()
+            except Exception:
+                pass
+        self.get_keyword.reset()
         return super(ActionKeyword, self).create(vals)

     def write(self, ids, vals):
@@ -177,6 +196,12 @@
                         ).fields_view_get.reset()
             except Exception:
                 pass
+            try:
+                pool.get(keyword.model.split(',')[0]
+                    ).view_toolbar_get.reset()
+            except Exception:
+                pass
+        self.get_keyword.reset()
         res = super(ActionKeyword, self).write(ids, vals)
         for keyword in self.browse(ids):
             # Restart the cache view
@@ -185,8 +210,14 @@
                         ).fields_view_get.reset()
             except Exception:
                 pass
+            try:
+                pool.get(keyword.model.split(',')[0]
+                    ).view_toolbar_get.reset()
+            except Exception:
+                pass
         return res

+    @Cache('ir_action_keyword.get_keyword')
     def get_keyword(self, keyword, value):
         pool = Pool()
         action_obj = pool.get('ir.action')
Index: trytond/model/modelview.py
===================================================================
--- a/trytond/model/modelview.py
+++ b/trytond/model/modelview.py
@@ -231,6 +231,7 @@
             return True
         return result

+    @Cache('modelview.view_toolbar_get')
     def view_toolbar_get(self):
         """
         Returns the model specific actions.


--
[email protected] mailing list

Reply via email to