Merge lp:~unifield-team/unifield-server/us-1450 into lp:unifield-server

Proposed by jftempo
Status: Merged
Merged at revision: 3933
Proposed branch: lp:~unifield-team/unifield-server/us-1450
Merge into: lp:unifield-server
Diff against target: 137 lines (+73/-10)
2 files modified
bin/addons/object_query/query.py (+70/-7)
bin/addons/object_query/query_view.xml (+3/-3)
To merge this branch: bzr merge lp:~unifield-team/unifield-server/us-1450
Reviewer Review Type Date Requested Status
UniField Reviewer Team Pending
Review via email: mp+300715@code.launchpad.net
To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'bin/addons/object_query/query.py'
2--- bin/addons/object_query/query.py 2016-06-24 12:00:57 +0000
3+++ bin/addons/object_query/query.py 2016-07-21 08:23:19 +0000
4@@ -509,8 +509,8 @@
5 model_obj = self.pool.get(obj.model)
6 for field in obj.field_id:
7 all_fields_ids.append(field.id)
8- col = model_obj._columns[field.name]
9- if hasattr(col, '_properties') and col._properties and not col.store:
10+ col = model_obj._columns.get(field.name)
11+ if col and hasattr(col, '_properties') and col._properties and not col.store:
12 if a[0] == 'is_function' or not isinstance(col, fields.related):
13 field_ids.append(field.id)
14
15@@ -534,6 +534,62 @@
16 res[obj.id] = target_obj._columns[obj.name].help
17 return res
18
19+ def _is_in_model(self, cr, uid, ids, field_name, args, context=None):
20+ res = {}
21+ for f in self.browse(cr, uid, ids, context=context):
22+ res[f.id] = True
23+ if f.name not in self.pool.get(f.model_id.model)._columns.keys():
24+ res[f.id] = False
25+
26+ return res
27+
28+ def _search_is_in_model(self, cr, uid, obj, name, args, context=None):
29+ '''
30+ Return all fields which are a function field
31+ '''
32+ if not args:
33+ return []
34+ if context is None:
35+ context = {}
36+
37+ def fill_in_model(model_ids):
38+ inherit_model_ids = []
39+ for obj in self.pool.get('ir.model').browse(cr, uid, model_ids, context=context):
40+ model_obj = self.pool.get(obj.model)
41+
42+ if model_obj._inherits:
43+ for inh_model_name in model_obj._inherits.keys():
44+ inh_model_ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', inh_model_name)], context=context)
45+ for inh_model_id in inh_model_ids:
46+ if inh_model_id not in model_ids:
47+ inherit_model_ids.append(inh_model_id)
48+
49+ for field in obj.field_id:
50+ if field.name not in model_obj._columns.keys():
51+ not_in_model.append(field.id)
52+ else:
53+ in_model.append(field.id)
54+
55+ if inherit_model_ids:
56+ fill_in_model(inherit_model_ids)
57+
58+ for a in args:
59+ if a[0] == 'is_in_model':
60+ field_ids = []
61+ all_fields_ids = []
62+ model_ids = context.get('model_ids', [(6,0,[])])[0][2]
63+
64+ if not model_ids:
65+ model_ids = self.pool.get('ir.model').search(cr, uid, [], context=context)
66+
67+ in_model = []
68+ not_in_model = []
69+ fill_in_model(model_ids)
70+
71+ if (a[1] == '=' and a[2] == False) or (a[1] == '!=' and a[2] == True):
72+ return [('id', 'in', not_in_model)]
73+ else:
74+ return [('id', 'in', in_model)]
75
76 _columns = {
77 'help': fields.function(_get_help, method=True, type='char', size='10000', string='Help'),
78@@ -542,16 +598,23 @@
79 method=True,
80 type='many2one', relation='ir.model',
81 string='Model'),
82- 'is_function': fields.function(_is_function,
83- fnct_search=_search_function,
84+ 'is_function': fields.function(_is_function,
85+ fnct_search=_search_function,
86 method=True,
87 type='boolean', string='Is function ?'),
88- 'is_unsearchable': fields.function(_is_function,
89- fnct_search=_search_function,
90+ 'is_unsearchable': fields.function(_is_function,
91+ fnct_search=_search_function,
92 method=True,
93 type='boolean', string='Is searchable ?'),
94+ 'is_in_model': fields.function(
95+ _is_in_model,
96+ fnct_search=_search_is_in_model,
97+ method=True,
98+ type='boolean',
99+ string='Is in model ?',
100+ ),
101 }
102-
103+
104 def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
105 '''
106 Call the view on context if there is.
107
108=== modified file 'bin/addons/object_query/query_view.xml'
109--- bin/addons/object_query/query_view.xml 2011-12-30 08:41:01 +0000
110+++ bin/addons/object_query/query_view.xml 2016-07-21 08:23:19 +0000
111@@ -82,7 +82,7 @@
112 <group colspan="4" attrs="{'invisible': [('newquery', '=', True)]}">
113 <notebook colspan="4">
114 <page string="Search fields">
115- <field name="selection_ids" colspan="4" domain="[('model_search_id', 'in', model_ids), ('is_unsearchable', '=', False)]" nolabel="1" mode="tree"
116+ <field name="selection_ids" colspan="4" domain="[('model_search_id', 'in', model_ids), ('is_unsearchable', '=', False), ('is_in_model', '=', True)]" nolabel="1" mode="tree"
117 context="{'special_tree_id': 'object_query_ir_field_tree', 'special_search_id': 'object_query_ir_field_search', 'model_ids': model_ids}"
118 >
119 <tree string="Search fields" noteditable="1" editable="top">
120@@ -103,7 +103,7 @@
121 </page>
122 <page string="Result fields">
123 <button name="populate_result" type="object" string="Populate from Search Fields" icon="terp-stock_effects-object-colorize" colspan="2"/>
124- <field name="result_simple_ids" colspan="4" nolabel="1" mode="tree" context="{'model_ids': model_ids, 'special_tree_id': 'object_query_ir_field_tree', 'special_search_id': 'object_query_ir_field_search'}" domain="[('model_search_id', 'in', model_ids)]">
125+ <field name="result_simple_ids" colspan="4" nolabel="1" mode="tree" context="{'model_ids': model_ids, 'special_tree_id': 'object_query_ir_field_tree', 'special_search_id': 'object_query_ir_field_search'}" domain="[('model_search_id', 'in', model_ids), ('is_in_model', '=', True)]">
126 <tree string="Result fields" editable="top" noteditable="1">
127 <field name="field_description" />
128 <field name="help" />
129@@ -123,7 +123,7 @@
130 </field>
131 </page>
132 <page string="Group by fields">
133- <field name="group_by_ids" colspan="4" domain="[('model_search_id', 'in', model_ids), ('ttype', 'not in', ('related', 'one2many', 'many2many')), ('is_function', '=', False)]"
134+ <field name="group_by_ids" colspan="4" domain="[('model_search_id', 'in', model_ids), ('ttype', 'not in', ('related', 'one2many', 'many2many')), ('is_function', '=', False), ('is_in_model', '=', True)]"
135 nolabel="1" mode="tree,search" context="{'special_tree_id': 'object_query_ir_field_tree', 'special_search_id': 'object_query_ir_field_search', 'model_ids': model_ids}">
136 <tree string="Group by fields" noteditable="1" editable="top">
137 <field name="field_description" />

Subscribers

People subscribed via source and target branches

to all changes: