Add ViewSearch

review590002
This commit is contained in:
Cédric Krier
2012-11-16 20:11:51 +01:00
parent d20a3cd722
commit 864b16a5e8
7 changed files with 124 additions and 2 deletions
+1
View File
@@ -1,3 +1,4 @@
* Add ViewSearch
* Add domains on Action Window
Version 2.6.0 - 2012-10-22
+1
View File
@@ -40,6 +40,7 @@ def register():
ViewShortcut,
ViewTreeWidth,
ViewTreeExpandedState,
ViewSearch,
Icon,
Property,
Action,
+38 -2
View File
@@ -6,7 +6,7 @@ from lxml import etree
from difflib import SequenceMatcher
from trytond.model import ModelView, ModelSQL, fields
from trytond.backend import TableHandler
from trytond.pyson import CONTEXT, Eval, Bool
from trytond.pyson import CONTEXT, Eval, Bool, PYSONDecoder
from trytond.tools import safe_eval, file_open
from trytond.transaction import Transaction
from trytond.wizard import Wizard, StateView, StateAction, Button
@@ -16,7 +16,7 @@ from trytond.rpc import RPC
__all__ = [
'View', 'ShowViewStart', 'ShowView', 'ViewShortcut', 'ShowView',
'OpenShortcut', 'ViewTreeWidth', 'ViewTreeExpandedState',
'OpenShortcut', 'ViewTreeWidth', 'ViewTreeExpandedState', 'ViewSearch',
]
@@ -529,3 +529,39 @@ class ViewTreeExpandedState(ModelSQL, ModelView):
except ValueError:
return '[]'
return cls(expanded_info).nodes
class ViewSearch(ModelSQL, ModelView):
"View Search"
__name__ = 'ir.ui.view_search'
name = fields.Char('Name', required=True)
model = fields.Char('Model', required=True)
domain = fields.Char('Domain', help="The PYSON domain")
user = fields.Many2One('res.user', 'User', required=True,
ondelete='CASCADE')
@classmethod
def __setup__(cls):
super(ViewSearch, cls).__setup__()
cls.__rpc__.update({
'get_search': RPC(),
})
@staticmethod
def default_user():
return Transaction().user
@classmethod
def get_search(cls, user_id=None):
if user_id is None:
user_id = Transaction().user
decoder = PYSONDecoder()
searches = cls.search([
('user', '=', user_id),
], order=[('model', 'ASC'), ('name', 'ASC')])
result = {}
for search in searches:
result.setdefault(search.model, []).append(
(search.id, search.name, decoder.decode(search.domain)))
return result
+30
View File
@@ -149,5 +149,35 @@ this repository contains the full copyright notices and license terms. -->
</record>
<menuitem parent="menu_ui" action="act_view_tree_expanded_state"
id="menu_view_tree_expanded_state"/>
<record model="ir.ui.view" id="view_search_form">
<field name="model">ir.ui.view_search</field>
<field name="type">form</field>
<field name="name">ui_view_search_form</field>
</record>
<record model="ir.ui.view" id="view_search_tree">
<field name="model">ir.ui.view_search</field>
<field name="type">tree</field>
<field name="name">ui_view_search_list</field>
</record>
<record model="ir.action.act_window" id="act_view_search">
<field name="name">View Search</field>
<field name="type">ir.action.act_window</field>
<field name="res_model">ir.ui.view_search</field>
</record>
<record model="ir.action.act_window.view"
id="act_view_search_tree">
<field name="sequence" eval="10"/>
<field name="view" ref="view_search_tree"/>
<field name="act_window" ref="act_view_search"/>
</record>
<record model="ir.action.act_window.view"
id="act_view_search_form">
<field name="sequence" eval="20"/>
<field name="view" ref="view_search_form"/>
<field name="act_window" ref="act_view_search"/>
</record>
<menuitem parent="menu_ui" action="act_view_search"
id="menu_view_search"/>
</data>
</tryton>
+13
View File
@@ -0,0 +1,13 @@
<?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 Search">
<label name="name"/>
<field name="name"/>
<label name="user"/>
<field name="user"/>
<label name="model"/>
<field name="model"/>
<label name="domain"/>
<field name="domain"/>
</form>
+7
View File
@@ -0,0 +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="View Searches">
<field name="name"/>
<field name="user"/>
</tree>
+34
View File
@@ -783,6 +783,40 @@ this repository contains the full copyright notices and license terms. -->
<field name="perm_delete" eval="True" />
</record>
<record model="ir.rule.group" id="rule_group_view_search">
<field name="model"
search="[('model', '=', 'ir.ui.view_search')]"/>
<field name="global_p" eval="False"/>
<field name="default_p" eval="True"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_delete" eval="True"/>
</record>
<record model="ir.rule" id="rule_group_view_search1">
<field name="field"
search="[('name', '=', 'user'), ('model.model', '=', 'ir.ui.view_search')]"/>
<field name="operator">=</field>
<field name="operand">User</field>
<field name="rule_group" ref="rule_group_view_search"/>
</record>
<record model="ir.rule.group" id="rule_group_view_search_admin">
<field name="model"
search="[('model', '=', 'ir.ui.view_search')]"/>
<field name="global_p" eval="False"/>
<field name="default_p" eval="False"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_delete" eval="True"/>
</record>
<record model="ir.rule.group-res.group"
id="rule_group_view_search_admin_group_admin">
<field name="rule_group" ref="rule_group_view_search_admin"/>
<field name="group" ref="group_admin"/>
</record>
<record model="ir.rule.group" id="rule_group_session">
<field name="model"
search="[('model', '=', 'ir.session')]"/>