session_kv_store.py 628 Bytes
Newer Older
Calen Pennington committed
1 2 3
"""
An :class:`~xblock.runtime.KeyValueStore` that stores data in the django session
"""
4
from __future__ import absolute_import
5

Calen Pennington committed
6
from xblock.runtime import KeyValueStore
7

8 9 10 11 12

def stringify(key):
    return repr(tuple(key))


13
class SessionKeyValueStore(KeyValueStore):
Calen Pennington committed
14
    def __init__(self, request):
15 16 17
        self._session = request.session

    def get(self, key):
18
        return self._session[stringify(key)]
19 20

    def set(self, key, value):
21
        self._session[stringify(key)] = value
22 23

    def delete(self, key):
24
        del self._session[stringify(key)]
25 26

    def has(self, key):
27
        return stringify(key) in self._session