def set_cookie(self, key, value='', max_age=None, path='/', domain=None, secure=None, httponly=False, version=None, comment=None, expires=None, overwrite=False): """ Set (add) a cookie for the response """ if isinstance(value, unicode): value = '"%s"' % value.encode(self.charset or 'ASCII') elif ' ' in value: value = '"%s"' % value if overwrite: self.unset_cookie(key, strict=False) morsel = _ExtendedMorsel(key, value) if isinstance(max_age, timedelta): max_age = max_age.seconds + max_age.days*24*60*60 if max_age is not None and expires is None: expires = datetime.utcnow() + timedelta(seconds=max_age) if isinstance(expires, timedelta): expires = datetime.utcnow() + expires if isinstance(expires, datetime): expires = '"'+datetime_utils._serialize_cookie_date(expires)+'"' for var_name, var_value in [ ('max-age', max_age), ('path', path), ('domain', domain), ('secure', secure), ('HttpOnly', httponly), ('version', version), ('comment', comment), ('expires', expires), ]: if var_value is not None and var_value is not False: morsel[var_name] = str(var_value) self._add_cookie(morsel)
def set_cookie(self, key, value='', max_age=None, path='/', domain=None, secure=None, httponly=False, version=None, comment=None, expires=None, overwrite=False): """ Set (add) a cookie for the response """ if isinstance(value, unicode) and self.charset is not None: value = '"%s"' % value.encode(self.charset) if overwrite: self.unset_cookie(key, strict=False) cookies = BaseCookie() cookies[key] = value if isinstance(max_age, timedelta): max_age = max_age.seconds + max_age.days * 24 * 60 * 60 if max_age is not None and expires is None: expires = datetime.utcnow() + timedelta(seconds=max_age) if isinstance(expires, timedelta): expires = datetime.utcnow() + expires if isinstance(expires, datetime): expires = '"' + datetime_utils._serialize_cookie_date( expires) + '"' for var_name, var_value in [ ('max-age', max_age), ('path', path), ('domain', domain), ('secure', secure), ('HttpOnly', httponly), ('version', version), ('comment', comment), ('expires', expires), ]: if var_value is not None and var_value is not False: cookies[key][var_name] = str(var_value) self._add_cookie(cookies)
def set_cookie(self, key, value='', max_age=None, path='/', domain=None, secure=None, httponly=False, version=None, comment=None, expires=None): """ Set (add) a cookie for the response """ if isinstance(value, unicode) and self.charset is not None: value = '"%s"' % value.encode(self.charset) cookies = BaseCookie() cookies[key] = value if isinstance(max_age, timedelta): max_age = max_age.seconds + max_age.days*24*60*60 if max_age is not None and expires is None: expires = datetime.utcnow() + timedelta(seconds=max_age) if isinstance(expires, timedelta): expires = datetime.utcnow() + expires if isinstance(expires, datetime): expires = '"'+datetime_utils._serialize_cookie_date(expires)+'"' for var_name, var_value in [ ('max_age', max_age), ('path', path), ('domain', domain), ('secure', secure), ('HttpOnly', httponly), ('version', version), ('comment', comment), ('expires', expires), ]: if var_value is not None and var_value is not False: cookies[key][var_name.replace('_', '-')] = str(var_value) header_value = cookies[key].output(header='').lstrip() if header_value.endswith(';'): # Python 2.4 adds a trailing ; to the end, strip it to be # consistent with 2.5 header_value = header_value[:-1] self.headerlist.append(('Set-Cookie', header_value))