datasette-comments
A Datasette plugin for commenting on data in tables.
Read Annotate and explore your data with datasette-comments for background on this project.
Installation
datasette-comments
requires a recent 1.0 alpha version of Datasette to work.
pip install datasette==1.0a7
Afterwards, install this plugin in the same environment as Datasette.
datasette install datasette-comments
Usage
datasette-comments
store comments in Datasette's internal database. So to persistent comments across multiple restarts, supply an database path on startup like so:
datasette --internal internal.db my_data.db
When comments are made on rows inside my_data.db
, the comment themselves are stored separately in internal.db
.
The datasette-comments-access
permission is required to be able to view and add comments. To give permissions to specfic users, set up your metadata.yaml
like so:
permissions:
datasette-comments-access:
id: ["simonw", "asg017"]
To provide actors and IDs, you'll need to setup a separate Datasette authentication plugin. Consider datasette-auth-passwords for a simple username/password setup.
Plugin hooks
This plugin provies the following plugin hook which can be used to customize its behavior:
datasette_comments_users(datasette)
This hook should return a list of dictionaries, each representing a user that should be made available to the plugin. Each dictionary should have the following keys:
id
: A unique ID of the user, same as the actor ID.username
: A unique string that is used in searches and @ mentions.name
: A string of the user's natural name.profile_photo_url
: Optional URL to the user's profile pic.email
: Optional email used for gravatar profile photo, if enabled.
The plugin hook can return a list, or it can return an awaitable function that returns a list.
Development
To set up this plugin locally, first checkout the code. Then create a new virtual environment:
cd datasette-comments
python3 -m venv venv
source venv/bin/activate
Now install the dependencies and test dependencies:
pip install -e '.[test]'
And for the JavaScript dependencies (needed to run a JavaScript build):
npm install
To run the tests:
pytest
To rebuild the minified JavaScript after making a change to a .ts
or .tsx
file:
just js