Events#

Datasette includes a mechanism for tracking events that occur while the software is running. This is primarily intended to be used by plugins, which can both trigger events and listen for events.

The core Datasette application triggers events when certain things happen. This page describes those events.

Plugins can listen for events using the track_event(datasette, event) plugin hook, which will be called with instances of the following classes - or additional classes registered by other plugins.

class datasette.events.LoginEvent(actor: dict | None)#

Event name: login

A user (represented by event.actor) has logged in.

class datasette.events.LogoutEvent(actor: dict | None)#

Event name: logout

A user (represented by event.actor) has logged out.

class datasette.events.CreateTokenEvent(actor: dict | None, expires_after: int | None, restrict_all: list, restrict_database: dict, restrict_resource: dict)#

Event name: create-token

A user created an API token.

Variables:
  • expires_after -- Number of seconds after which this token will expire.

  • restrict_all -- Restricted permissions for this token.

  • restrict_database -- Restricted database permissions for this token.

  • restrict_resource -- Restricted resource permissions for this token.

class datasette.events.CreateTableEvent(actor: dict | None, database: str, table: str, schema: str)#

Event name: create-table

A new table has been created in the database.

Variables:
  • database -- The name of the database where the table was created.

  • table -- The name of the table that was created

  • schema -- The SQL schema definition for the new table.

class datasette.events.DropTableEvent(actor: dict | None, database: str, table: str)#

Event name: drop-table

A table has been dropped from the database.

Variables:
  • database -- The name of the database where the table was dropped.

  • table -- The name of the table that was dropped

class datasette.events.AlterTableEvent(actor: dict | None, database: str, table: str, before_schema: str, after_schema: str)#

Event name: alter-table

A table has been altered.

Variables:
  • database -- The name of the database where the table was altered

  • table -- The name of the table that was altered

  • before_schema -- The table's SQL schema before the alteration

  • after_schema -- The table's SQL schema after the alteration

class datasette.events.InsertRowsEvent(actor: dict | None, database: str, table: str, num_rows: int, ignore: bool, replace: bool)#

Event name: insert-rows

Rows were inserted into a table.

Variables:
  • database -- The name of the database where the rows were inserted.

  • table -- The name of the table where the rows were inserted.

  • num_rows -- The number of rows that were requested to be inserted.

  • ignore -- Was ignore set?

  • replace -- Was replace set?

class datasette.events.UpsertRowsEvent(actor: dict | None, database: str, table: str, num_rows: int)#

Event name: upsert-rows

Rows were upserted into a table.

Variables:
  • database -- The name of the database where the rows were inserted.

  • table -- The name of the table where the rows were inserted.

  • num_rows -- The number of rows that were requested to be inserted.

class datasette.events.UpdateRowEvent(actor: dict | None, database: str, table: str, pks: list)#

Event name: update-row

A row was updated in a table.

Variables:
  • database -- The name of the database where the row was updated.

  • table -- The name of the table where the row was updated.

  • pks -- The primary key values of the updated row.

class datasette.events.DeleteRowEvent(actor: dict | None, database: str, table: str, pks: list)#

Event name: delete-row

A row was deleted from a table.

Variables:
  • database -- The name of the database where the row was deleted.

  • table -- The name of the table where the row was deleted.

  • pks -- The primary key values of the deleted row.