datasette-updated

Display the date your data was updated


Keywords
datasette-plugin
License
Apache-2.0
Install
pip install datasette-updated==0.2.0

Documentation

datasette-updated

PyPI Changelog Tests License

Display the date your data was updated

Installation

Install this plugin in the same environment as Datasette.

datasette install datasette-updated

Usage

You can have a different updated value per table, database or Datasette instance. If undefined at any level, updated will fall back in that order. If no value is set, updated will be unknown.

Base metadata configuration

If you have known updated values, you can define them in your base metadata.(json|yml):

{
  "plugins": {
    "datasette-updated": {
      "updated": "2023-12-14T23:04:42+00:00"
    }
  },
  "databases": {
    "my-database-name": {
      "plugins": {
        "datasette-updated": {
          "updated": "2023-01-01T00:00:00+00:00"
        }
      },
      "tables": {
        "my-table-name": {
          "plugins": {
            "datasette-updated": {
              "updated": "2020-01-01T00:00:00+00:00"
            }
          }
          ...

Plugin metadata configuration

If you want to define more dynamic updated value(s) on datasette package or datasette publish, put metadata for this plugin in YOUR_PLUGINS_DIR/datasette-updated/metadata.(json|yml). The following is an example that sets updated to the current date/time.

mkdir -p plugins/datasette-updated/ && \
echo '{
  "plugins": {
    "datasette-updated": {
      "updated": "'"$(date -Iseconds)"'"
    }
  }
}' > plugins/datasette-updated/metadata.json && \
datasette publish --plugins-dir=plugins --install=datasette-updated ...

Combined metadata configuration

You can combine base metadata and plugin metadata configuration, but be aware that the base metadata.(json|yml) will always win if there is a duplicate configuration value.

Extra configuration

The base / instance level metadata can accept the following extra configuration (that will apply to all levels):

Display

The plugin will try to load a footer template that is copied from the default Datasette footer template, but with the following addition:

{% if datasette_updated %}·
    Updated:
    <time
      data-local="{{ datasette_updated.time_type }}"
      datetime="{{ datasette_updated.updated }}">
        {{ datasette_updated.updated }}
    </time>
{% endif %}
  • If you have your own custom footer template, you will need to add the above code, as your base template will take precedence.
  • Look at local_time for extra configuration options (just ignore the Ruby parts).

Screenshot and Demo

screenshot

  • Example site: https://querydata.io/
  • The Javascript component converts time elements from UTC to the browser's local time.

Development

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

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

Now install the dependencies and test dependencies:

pip install -e '.[test]'

To run the tests:

pytest