Skip to content

Conversation

@zhujunling-nj
Copy link

Fixed "Setting cookie values using the dict pattern has been deprecated" and "Setting values on a Cookie object as a dict has been deprecated"

…ed" and "Setting values on a Cookie object as a dict has been deprecated"
@ameyarao98
Copy link

🙏

@wangyuhuiever
Copy link

This will broken when sanic version before 23.3.0.
So, I add version check on my own script

from packaging.version import Version
...
    def _delete_cookie(self, request, response):
        req = get_request_container(request)
        if Version(sanic.__version__) > Version('23.3.0'):
            response.delete_cookie(self.cookie_name)
        else:
            response.cookies[self.cookie_name] = req[self.session_name].sid

            # We set expires/max-age even for session cookies to force expiration
            response.cookies[self.cookie_name]["expires"] = datetime.datetime.utcnow()
            response.cookies[self.cookie_name]["max-age"] = 0

   def _set_cookie_props(self, request, response):
        req = get_request_container(request)
        if Version(sanic.__version__) > Version('23.3.0'):
            kw = {
                'httponly': self.httponly,
                'secure': self.secure,
            }
            if not self.sessioncookie:
                kw.update({
                    'expires': self._calculate_expires(self.expiry),
                    'max_age': self.expiry
                })
            if self.domain:
                kw.update({
                    'domain': self.domain
                })
            if self.samesite is not None:
                kw.update({
                    'samesite': self.samesite
                })
            response.add_cookie(
                self.cookie_name,
                req[self.session_name].sid,
                **kw
            )
        else:
            response.cookies[self.cookie_name] = req[self.session_name].sid
            response.cookies[self.cookie_name]["httponly"] = self.httponly

            # Set expires and max-age unless we are using session cookies
            if not self.sessioncookie:
                response.cookies[self.cookie_name]["expires"] = self._calculate_expires(self.expiry)
                response.cookies[self.cookie_name]["max-age"] = self.expiry

            if self.domain:
                response.cookies[self.cookie_name]["domain"] = self.domain

            if self.samesite is not None:
                response.cookies[self.cookie_name]["samesite"] = self.samesite

            if self.secure:
                response.cookies[self.cookie_name]["secure"] = True

@khaledAbdelMoezz
Copy link

also the new forked Vesion fixed (https://pypi.org/project/sanic-sessions/) it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants