datasette-public by simonw

146 downloads this week        Star

README source code

datasette-public

PyPI Changelog Tests License

Make specific Datasette tables visible to the public

Installation

Install this plugin in the same environment as Datasette.

datasette install datasette-public

Usage

Any tables listed in the _public_tables table will be visible to the public, even if the rest of the Datasette instance does not allow anonymous access.

The root user (and any user with the new public-tables permission) will get a new option in the table action menu allowing them to toggle a table between public and private.

Installing this plugin also causes allow-sql permission checks to fall back to checking if the user has access to the entire database. This is to avoid users with access to a single public table being able to access data from other tables using the ?_where= query string parameter.

Configuration

This plugin creates a new table in one of your databases called _public_tables.

This table defaults to being created in the first database passed to Datasette.

To create it in a different named database, use this plugin configuration:

{
  "plugins": {
    "datasette-public": {
      "database": "database_to_create_table_in"
    }
  }
}

Development

To set up this plugin locally, first checkout the code. Then create a new virtual environment:

cd datasette-public
python3 -m venv venv
source venv/bin/activate

Now install the dependencies and test dependencies:

pip install -e '.[test]'

To run the tests:

pytest