A Datasette plugin for commenting on data in tables.
Read Annotate and explore your data with datasette-comments for background on this project.
datasette-comments requires a recent 1.0 alpha version of Datasette to work.
pip install datasette==1.0a7Afterwards, install this plugin in the same environment as Datasette.
datasette install datasette-commentsdatasette-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.dbWhen 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.
This plugin provies the following plugin hook which can be used to customize its behavior:
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.
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/activateNow install the dependencies and test dependencies:
pip install -e '.[test]'And for the JavaScript dependencies (needed to run a JavaScript build):
npm installTo run the tests:
pytestTo rebuild the minified JavaScript after making a change to a .ts or .tsx file:
just js