[MERGE] backport of share and pad modules bugfixes
[odoo/odoo.git] / addons / share / web / controllers.py
1 import urlparse
2
3 from openobject.tools import expose, ast
4 from openerp.controllers import actions
5 from openerp.utils import rpc
6
7 import openerp.controllers
8 import cherrypy
9
10
11
12 class ShareWizardController(openerp.controllers.SecuredController):
13     _cp_path = "/share"
14
15     @expose()
16     def index(self, domain, search_domain, context, view_id):
17         context = ast.literal_eval(context)
18
19         action_id = rpc.RPCProxy('ir.actions.act_window').search(
20             [('view_id','=',int(view_id))], context=context)
21         if not action_id: return ""
22
23         domain = ast.literal_eval(domain)
24         domain.extend(ast.literal_eval(search_domain))
25
26         action_id = action_id[0]
27         share_model =  'share.wizard'
28
29         scheme, netloc, _, _, _ = urlparse.urlsplit(cherrypy.request.base)
30         share_root_url = urlparse.urlunsplit((
31             scheme, netloc, '/openerp/login',
32             'db=%(dbname)s&user=%(login)s&password=%(password)s', ''))
33
34         share_wiz_id = rpc.RPCProxy('ir.ui.menu').search(
35             [('name','=', 'Share Wizard')])
36         context.update(
37             active_ids=share_wiz_id,
38             active_id=share_wiz_id[0],
39             _terp_view_name='Share Wizard',
40             share_root_url=share_root_url)
41         sharing_view_id = rpc.RPCProxy(share_model).create({
42             'domain': str(domain),
43             'action_id':action_id
44         }, context)
45         return actions.execute(
46             rpc.session.execute('object', 'execute', share_model, 'go_step_1',
47                                 [sharing_view_id], context),
48             ids=[sharing_view_id], context=context)