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)
Example #2
0
 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)
Example #3
0
 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))