def on_render_request(self, request): """ Action will return a Deferred that will return the page content """ def cb_action(result): request.set_header('content-length', str(len(result))) def _write(r): request.write(result) return True return plugin.run_hook("on_after_render", request ).add_callback(_write) #TODO execute a before/after hook if one exists in the controller """ #TODO pass in args as *args and **kwargs if not self.args: self.args = inspect.getargspec(self.rend) for index, arg in enumerate(self.args.args): if arg in self.request.args: kw[arg] = self.request.args[arg] else: #If it doesn't have a default, pass in None if self.args.defaults and len(self.args.defaults) + index < len(self.args): kw[arg] = None """ print 'request.action', request.action return core.maybe_deferred(request.action, request).add_callback(cb_action)
def on_new_session(self, request): """ We are about to create a new session for this user. Should we automagically authenticate him based on an authentication token and then use this information to generate the session """ cookie_name = request.get_action_parameter("auth_token_cookie_name", "gyro-auth-token") token = request.get_cookie(cookie_name) if token: uid = yield core.maybe_deferred(self.storage.use_token, token) if uid: engine = request.get_action_parameter("auth_provider") if engine: session = yield core.maybe_deferred(engine.get_user_session, uid) if session: self.on_remember_me(request, uid, token, cookie_name) defer.returnValue(session)
def on_remember_me(self, request, uid, token=None, cookie_name=None): """ Remember a user's authentication information so that they don't have to log in every time their session expires """ token = token or util.uuid() cookie_name = cookie_name or request.get_action_parameter( "auth_token_cookie_name", "gyro-auth-token") yield core.maybe_deferred(self.storage.add_token, token, uid) request.add_cookie(cookie_name, token, expires=datetime.datetime.now() + self.token_valid_time, path="/")
def on_render_basic(self, request): """ Just call action and let it do what it needs to do """ return core.maybe_deferred(request.action, request)