From e136ab01014dbb93c646bd09b6b06f5b421c50af Mon Sep 17 00:00:00 2001 From: Sander Date: Wed, 8 Jul 2020 17:07:58 +0200 Subject: [PATCH] Actually implement a working NullSessionInterface, fixes pgjones/quart#105, bump version --- quart_session/__init__.py | 14 +++++++++++++- quart_session/sessions.py | 23 +++++++++++++++++++---- setup.py | 2 +- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/quart_session/__init__.py b/quart_session/__init__.py index 2fab284..558e188 100644 --- a/quart_session/__init__.py +++ b/quart_session/__init__.py @@ -98,6 +98,10 @@ class Session(object): app.logger.warning("Deprecation: `SESSION_HIJACK_REVERSE_PROXY` " "has been renamed to `SESSION_REVERSE_PROXY`") + backend_warning = f"Please specify a session backend. " \ + f"Available interfaces: redis, redis+trio, " \ + f"memcached, null. e.g: app.config['SESSION_TYPE'] = 'redis'" + if config['SESSION_TYPE'] == 'redis': options = { "redis": config['SESSION_REDIS'], @@ -129,7 +133,15 @@ class Session(object): use_signer=config['SESSION_USE_SIGNER'], permanent=config['SESSION_PERMANENT'], **config) + elif config['SESSION_TYPE'] == 'null': + app.logger.warning(f"{backend_warning}. Currently using: null") + session_interface = NullSessionInterface( + key_prefix=config['SESSION_KEY_PREFIX'], + use_signer=config['SESSION_USE_SIGNER'], + permanent=config['SESSION_PERMANENT'], + **config) else: - session_interface = NullSessionInterface() + raise NotImplementedError(f"No such session interface " + f"\"{config['SESSION_TYPE']}\". {backend_warning}") return session_interface diff --git a/quart_session/sessions.py b/quart_session/sessions.py index db09e32..4678dbe 100644 --- a/quart_session/sessions.py +++ b/quart_session/sessions.py @@ -354,8 +354,23 @@ class MemcachedSessionInterface(SessionInterface): class NullSessionInterface(SessionInterface): - """Used to open a :class:`quart.sessions.NullSession` instance. - """ + """This class does absolutely nothing""" + session_class = NullSession - def open_session(self, app: Quart, request: BaseRequestWebsocket): - return None + def __init__( + self, key_prefix: str, use_signer: bool = False, + permanent: bool = True, **kwargs): + super(NullSessionInterface, self).__init__( + key_prefix=key_prefix, use_signer=use_signer, + permanent=permanent, **kwargs) + self.backend = None + + async def create(self, app: Quart) -> None: + pass + + async def get(self, key: str, app: Quart = None) -> None: + pass + + async def set(self, key: str, value, expiry: int = None, + app: Quart = None) -> None: + pass diff --git a/setup.py b/setup.py index 48dbbd9..e6b2fc8 100644 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ INSTALL_REQUIRES = [ setup( name='Quart-Session', - version='1.0.0', + version='1.0.1', url='https://github.com/sferdi0/quart-session', license='BSD', author='Sander',