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[исходный код]

Defines an interface for storage backends.

Изменено в версии 1.6: StorageBackend class is moved to sphinxcontrib.websupport.storage from sphinx.websupport.storage.

Methods

StorageBackend.pre_build()[исходный код]

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

StorageBackend.add_node(id, document, source)[исходный код]

Add a node to the StorageBackend.

Параметры:
  • 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()[исходный код]

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)[исходный код]

Called when a comment is being added.

Параметры:
  • 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)[исходный код]

Delete a comment.

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

Параметры:
  • 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)[исходный код]

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.

Параметры:
  • 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)[исходный код]

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

Параметры:
  • 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)[исходный код]

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.

Параметры:
  • old_username – The username being changed.

  • new_username – What the username is being changed to.

StorageBackend.accept_comment(comment_id)[исходный код]

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

Параметры:

comment_id – The id of the comment being accepted.