Storage Backends

To create a custom storage backend you will need to subclass the StorageBackend class. Then create an instance of the new class and pass that as the storage keyword argument when you create the WebSupport object:

support = WebSupport(srcdir=srcdir,
                     builddir=builddir,
                     storage=MyStorage())

For more information about creating a custom storage backend, please see the documentation of the StorageBackend class below.

class sphinxcontrib.websupport.storage.StorageBackend[source]

Defines an interface for storage backends.

Changed in version 1.6: StorageBackend class is moved to sphinxcontrib.websupport.storage from sphinx.websupport.storage.

Methods

StorageBackend.pre_build()[source]

Called immediately before the build process begins. Use this to prepare the StorageBackend for the addition of nodes.

StorageBackend.add_node(id, document, source)[source]

Add a node to the StorageBackend.

Parameters:
id

a unique id for the comment.

document

the name of the document the node belongs to.

source

the source files name.

StorageBackend.post_build()[source]

Called after a build has completed. Use this to finalize the addition of nodes if needed.

StorageBackend.add_comment(text, displayed, username, time, proposal, node_id, parent_id, moderator)[source]

Called when a comment is being added.

Parameters:
text

the text of the comment

displayed

whether the comment should be displayed

username

the name of the user adding the comment

time

a date object with the time the comment was added

proposal

the text of the proposal the user made

node_id

the id of the node that the comment is being added to

parent_id

the id of the comment’s parent comment.

moderator

whether the user adding the comment is a moderator

StorageBackend.delete_comment(comment_id, username, moderator)[source]

Delete a comment.

Raises UserNotAuthorizedError if moderator is False and username doesn’t match the username on the comment.

Parameters:
comment_id

The id of the comment being deleted.

username

The username of the user requesting the deletion.

moderator

Whether the user is a moderator.

StorageBackend.get_data(node_id, username, moderator)[source]

Called to retrieve all data for a node. This should return a dict with two keys, source and comments as described by WebSupport’s get_data() method.

Parameters:
node_id

The id of the node to get data for.

username

The name of the user requesting the data.

moderator

Whether the requestor is a moderator.

StorageBackend.process_vote(comment_id, username, value)[source]

Process a vote that is being cast. value will be either -1, 0, or 1.

Parameters:
comment_id

The id of the comment being voted on.

username

The username of the user casting the vote.

value

The value of the vote being cast.

StorageBackend.update_username(old_username, new_username)[source]

If a user is allowed to change their username this method should be called so that there is not stagnate data in the storage system.

Parameters:
old_username

The username being changed.

new_username

What the username is being changed to.

StorageBackend.accept_comment(comment_id)[source]

Called when a moderator accepts a comment. After the method is called the comment should be displayed to all users.

Parameters:
comment_id

The id of the comment being accepted.