def prepare(self, escape_func=cgi.escape, noescape=False): self.cache = {} enc = self.encoding self._str = lambda x: utils.touni(x, enc) self._escape = lambda x: escape_func(utils.touni(x, enc)) if noescape: self._str, self._escape = self._escape, self._str
def set_cookie(self, key, value, secret=None, **kargs): ''' Add a cookie. If the `secret` parameter is set, this creates a `Secure Cookie` (described below). :param key: the name of the cookie. :param value: the value of the cookie. :param secret: required for secure cookies. (default: None) :param max_age: maximum age in seconds. (default: None) :param expires: a datetime object or UNIX timestamp. (defaut: None) :param domain: the domain that is allowed to read the cookie. (default: current domain) :param path: limits the cookie to a given path (default: /) If neither `expires` nor `max_age` are set (default), the cookie lasts only as long as the browser is not closed. Secure cookies may store any pickle-able object and are cryptographically signed to prevent manipulation. Keep in mind that cookies are limited to 4kb in most browsers. Warning: Secure cookies are not encrypted (the client can still see the content) and not copy-protected (the client can restore an old cookie). The main intention is to make pickling and unpickling save, not to store secret information at client side. ''' if secret: value = utils.touni(cookie_encode((key, value), secret)) elif not isinstance(value, basestring): raise TypeError('Secret missing for non-string Cookie.') self.COOKIES[key] = value for k, v in kargs.iteritems(): self.COOKIES[key][k.replace('_', '-')] = v