Add ViewSearch
review590002
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
* Add ViewSearch
|
||||
* Add domains on Action Window
|
||||
|
||||
Version 2.6.0 - 2012-10-22
|
||||
|
||||
@@ -40,6 +40,7 @@ def register():
|
||||
ViewShortcut,
|
||||
ViewTreeWidth,
|
||||
ViewTreeExpandedState,
|
||||
ViewSearch,
|
||||
Icon,
|
||||
Property,
|
||||
Action,
|
||||
|
||||
+38
-2
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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')]"/>
|
||||
|
||||
Reference in New Issue
Block a user