diff --git a/controllers/__init__.py b/controllers/__init__.py index 0ee98e1..aae5e22 100644 --- a/controllers/__init__.py +++ b/controllers/__init__.py @@ -35,3 +35,32 @@ def get_request(self, httprequest): else: return HttpRequest(httprequest) root.get_request = MethodType(get_request, root) + + +from odoo.http import session_gc + +WXAPP_SID = None + +def setup_session(self, httprequest): + # recover or create session + session_gc(self.session_store) + + sid = httprequest.args.get('session_id') + explicit_session = True + if not sid: + sid = httprequest.headers.get("X-Openerp-Session-Id") + if not sid: + sid = httprequest.cookies.get('session_id') + explicit_session = False + wxapp_flag = 'Referer' in httprequest.headers and 'servicewechat.com' in httprequest.headers['Referer'] + global WXAPP_SID + if wxapp_flag and WXAPP_SID: + sid = WXAPP_SID + if sid is None: + httprequest.session = self.session_store.new() + if wxapp_flag: + WXAPP_SID = httprequest.session.sid + else: + httprequest.session = self.session_store.get(sid) + return explicit_session +root.setup_session = MethodType(setup_session, root)