quixote_extras / titus / session2 / session2 / store / SessionStore.py

"""
Base class for persistent session stores.
"""

class SessionStore:
    """
    Persistent `Session` storage API for session2's `SessionManager`.

    Subclass this class & provide implementations of `load_session`,
    `save_session`, and `delete_session`, and voila, persistent sessions!
    """

    is_multiprocess_safe = False
    is_thread_safe = False
    
    #### Methods called by the SessionManager ####
    def load_session(self, id, default=None):
        """Return the session if it exists, else return 'default'."""

        raise NotImplementedError()

    def save_session(self, session):
        """Save the session in the store."""

        raise NotImplementedError()

    def delete_session(self, session):
        """Delete the session in the store."""

        raise NotImplementedError()

    def has_session(self, id):
        """Return true if the session exists in the store, else false."""

        return self.load_session(id, None)

    #### Other methods ####
    def iter_sessions(self):
        """
        Return an iterable of (id, session) for all sessions in the store.

        This method is never called by the session manager; it's for admin
        applications that want to browse the sessions.
        """

        raise NotImplementedError()
    
    def setup(self):
        """
        Initialize the session store; e.g., create required database tables.
        If a previous store exists, overwrite it or raise an error.  The
        default implmenetation does nothing, meaning no setup is necessary.

        This method is never called by the session manager; it's for your
        application setup program.
        """

        pass

    def delete_old_sessions(self, minutes):
        """
        Delete all sessions that have not been modified for N minutes.  The
        default implementation does nothing, meaning the store cannot delete
        old sessions.

        This method is never called by the session manager.  It's for your
        application maintenance program; e.g., a daily cron job.
        """

        pass
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.