Mohammed Shekha(Open ERP) has proposed merging
lp:~openerp-dev/openobject-client-web/6.0-bug-16165-msh into
lp:openobject-client-web/6.0.
Requested reviews:
OpenERP Core Team (openerp)
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-client-web/6.0-bug-16165-msh/+merge/68787
Hello,
Change the code so that when record opened in new tab at that time menu remains
persistent, before that when record was opened in new tab menu were changed and
by default sale menu came. This was handled by revision no. 4642 but due to
this revision issue 16165 was arise i.e. parent_id not found that is because we
are setting id of data in active_id of context so according to revision 4642
the code will make rpc call with active_id of context for fetching menu id
which is actually id of data.
Thanx.
--
https://code.launchpad.net/~openerp-dev/openobject-client-web/6.0-bug-16165-msh/+merge/68787
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-client-web/6.0-bug-16165-msh.
=== modified file 'addons/openerp/controllers/actions.py'
--- addons/openerp/controllers/actions.py 2011-05-23 13:07:54 +0000
+++ addons/openerp/controllers/actions.py 2011-07-22 05:41:42 +0000
@@ -198,7 +198,7 @@
if not action.get('opened'):
action.setdefault('target', 'current')
return act_window_opener(action, data)
-
+
for key in ('res_id', 'res_model', 'view_type',
'view_mode', 'limit', 'search_view'):
data[key] = action.get(key, data.get(key))
@@ -226,7 +226,13 @@
view_ids = [action['view_id'][0]]
if not action.get('domain'):
action['domain'] = '[]'
-
+
+ global menu_id
+ menu_id = False
+
+ if not data['context'].get('active_id'):
+ menu_id = data.get('id', False)
+
ctx = dict(data.get('context', {}),
active_id=data.get('id', False),
active_ids=data.get('ids', []),
@@ -367,8 +373,8 @@
if open_new_tab:
parent_id = False
- if data['context'] and data['context'].get('active_id') and not data.get('model'):
- parent = rpc.RPCProxy('ir.ui.menu').read([int(data['context']['active_id'])],['complete_name'], rpc.session.context)[0]['complete_name'].split('/')[0]
+ if menu_id:
+ parent = rpc.RPCProxy('ir.ui.menu').read([int(menu_id)],['complete_name'], rpc.session.context)[0]['complete_name'].split('/')[0]
parent_id = rpc.RPCProxy('ir.ui.menu').search([('name','=', parent),('parent_id','=',False)],0,0,0, rpc.session.context)
if parent_id:
url = '/openerp/?' + urllib.urlencode({'active': parent_id[0],'next': url})
=== modified file 'addons/openerp/controllers/openo2m.py'
--- addons/openerp/controllers/openo2m.py 2011-04-04 15:02:36 +0000
+++ addons/openerp/controllers/openo2m.py 2011-07-22 05:41:42 +0000
@@ -38,7 +38,7 @@
params.model = params.o2m_model
params.view_mode = ['form', 'tree']
params.view_type = 'form'
-
+ params['_o2m'] = 1
#XXX: dirty hack to fix bug #401700
if not params.get('_terp_view_ids'):
params['_terp_view_ids'] = []
=== modified file 'addons/openerp/widgets/_views.py'
--- addons/openerp/widgets/_views.py 2011-06-24 11:10:14 +0000
+++ addons/openerp/widgets/_views.py 2011-07-22 05:41:42 +0000
@@ -63,7 +63,7 @@
context=screen.context,
editable=screen.editable,
readonly=screen.readonly,
- nodefault=screen.nodefault, nolinks=screen.link)
+ nodefault=screen.nodefault, nolinks=screen.link, o2m=screen.o2m)
if not screen.is_wizard and screen.ids is None:
limit = screen.limit or 50
=== modified file 'addons/openerp/widgets/form/_form.py'
--- addons/openerp/widgets/form/_form.py 2011-07-18 09:36:24 +0000
+++ addons/openerp/widgets/form/_form.py 2011-07-22 05:41:42 +0000
@@ -623,8 +623,7 @@
class Button(TinyInputWidget):
template = "/openerp/widgets/form/templates/button.mako"
- params = ["btype", "id", "confirm", "icon", "target", "context", "default_focus"]
-
+ params = ["btype", "id", "confirm", "icon", "target", "context", "default_focus", "readonly"]
visible = True
def __init__(self, **attrs):
super(Button, self).__init__(**attrs)
@@ -639,7 +638,8 @@
if self.icon:
self.icon = icons.get_icon(self.icon)
self.default_focus = attrs.get('default_focus', 0)
-
+ self.readonly = attrs.get('readonly', False)
+
def set_state(self, state):
if self.states:
self.visible = state in self.states
@@ -742,7 +742,7 @@
params = ['id']
member_widgets = ['frame', 'concurrency_info']
- def __init__(self, prefix, model, view, ids=[], domain=[], context=None, editable=True, readonly=False, nodefault=False, nolinks=1):
+ def __init__(self, prefix, model, view, ids=[], domain=[], context=None, editable=True, readonly=False, nodefault=False, nolinks=1, o2m=None):
super(Form, self).__init__(prefix=prefix, model=model, editable=editable, readonly=readonly, nodefault=nodefault)
dom = xml.dom.minidom.parseString(view['arch'].encode('utf-8'))
@@ -753,7 +753,8 @@
self.link = attrs.get('link', nolinks)
self.model = model
self.id = None
-
+ self.o2m = o2m
+
proxy = rpc.RPCProxy(model)
self.context = dict(rpc.session.context,
@@ -807,7 +808,13 @@
self.view_fields = []
self.nb_couter = 0
- self.frame = self.parse(prefix, dom, fields, values)[0]
+ self.btn_readonly = 0
+
+ if not self.id and self.o2m == 1:
+ self.btn_readonly = 1
+ self.frame = self.parse(prefix, dom, fields, values, self.btn_readonly)[0]
+ else:
+ self.frame = self.parse(prefix, dom, fields, values)[0]
self.values = [values]
self.concurrency_info = ConcurrencyInfo(self.model, [self.id])
@@ -827,8 +834,9 @@
field = self._make_field_widget(attrs, values.get(name))
self.frame.add_hidden(field)
- def parse(self, prefix='', root=None, fields=None, values={}):
-
+ def parse(self, prefix='', root=None, fields=None, values={}, btn_readonly=None):
+
+ btn_readonly = btn_readonly or 0
views = []
for node in root.childNodes:
@@ -864,25 +872,27 @@
elif node.localName=='button':
attrs['editable'] = self.editable
+ if btn_readonly == 1:
+ attrs['readonly'] = True
views.append(Button(model=self.model, id=self.id, **attrs))
elif node.localName == 'form':
- n = self.parse(prefix=prefix, root=node, fields=fields, values=values)
+ n = self.parse(prefix=prefix, root=node, fields=fields, values=values, btn_readonly=btn_readonly)
views.append(Frame(children=n, **attrs))
elif node.localName == 'notebook':
- n = self.parse(prefix=prefix, root=node, fields=fields, values=values)
+ n = self.parse(prefix=prefix, root=node, fields=fields, values=values, btn_readonly=btn_readonly)
nb = Notebook(children=n, **attrs)
self.nb_couter += 1
nb._name = prefix.replace('/', '_') + '_notebook_%s' % (self.nb_couter)
views.append(nb)
elif node.localName == 'page':
- n = self.parse(prefix=prefix, root=node, fields=fields, values=values)
+ n = self.parse(prefix=prefix, root=node, fields=fields, values=values, btn_readonly=btn_readonly)
views.append(Page(children=n, **attrs))
elif node.localName=='group':
- n = self.parse(prefix=prefix, root=node, fields=fields, values=values)
+ n = self.parse(prefix=prefix, root=node, fields=fields, values=values, btn_readonly=btn_readonly)
views.append(Group(children=n, **attrs))
elif node.localName == 'field':
@@ -914,15 +924,15 @@
views.append(field)
elif node.localName=='hpaned':
- n = self.parse(prefix=prefix, root=node, fields=fields, values=values)
+ n = self.parse(prefix=prefix, root=node, fields=fields, values=values, btn_readonly=btn_readonly)
views.append(HPaned(children=n, **attrs))
elif node.localName=='vpaned':
- n = self.parse(prefix=prefix, root=node, fields=fields, values=values)
+ n = self.parse(prefix=prefix, root=node, fields=fields, values=values, btn_readonly=btn_readonly)
views.append(VPaned(children=n, **attrs))
elif node.localName in ('child1', 'child2'):
- n = self.parse(prefix=prefix, root=node, fields=fields, values=values)
+ n = self.parse(prefix=prefix, root=node, fields=fields, values=values, btn_readonly=btn_readonly)
attrs['name'] = get_node_xpath(node)
views.append(Dashbar(children=n, **attrs))
@@ -932,7 +942,7 @@
cherrypy.request._terp_dashboard = True
else:
- n = self.parse(prefix=prefix, root=node, fields=fields, values=values)
+ n = self.parse(prefix=prefix, root=node, fields=fields, values=values, btn_readonly=btn_readonly)
args = node_attributes(node)
attrs['args'] = args
attrs['tag_name'] = node.localName
=== modified file 'addons/openerp/widgets/form_view.py'
--- addons/openerp/widgets/form_view.py 2011-06-22 11:55:05 +0000
+++ addons/openerp/widgets/form_view.py 2011-07-22 05:41:42 +0000
@@ -87,7 +87,7 @@
params.group_by_ctx = self.search.groupby
self.screen = Screen(prefix='', hastoolbar=True, hassubmenu=True, editable=editable, readonly=readonly,
- selectable=params.selectable or 2)
+ selectable=params.selectable or 2, _o2m= params._o2m or 0)
if self.screen.widget and self.screen.view_type in ['form', 'tree']:
self.logs = Logs()
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp