sections
3 rows where breadcrumbs = "["Plugin hooks", "Event tracking"]"
This data as json, CSV (advanced)
Suggested facets: breadcrumbs (array)
| id ▼ | page | ref | title | content | breadcrumbs | references |
|---|---|---|---|---|---|---|
| plugin_hooks:plugin-hook-register-events | plugin_hooks | plugin-hook-register-events | register_events(datasette) | datasette - Datasette class You can use this to access plugin configuration options via datasette.plugin_config(your_plugin_name) . This hook should return a list of Event subclasses that represent custom events that the plugin might send to the datasette.track_event() method. This example registers event subclasses for ban-user and unban-user events: from dataclasses import dataclass from datasette import hookimpl, Event @dataclass class BanUserEvent(Event): name = "ban-user" user: dict @dataclass class UnbanUserEvent(Event): name = "unban-user" user: dict @hookimpl def register_events(): return [BanUserEvent, UnbanUserEvent] The plugin can then call datasette.track_event(...) to send a ban-user event: await datasette.track_event( BanUserEvent(user={"id": 1, "username": "cleverbot"}) ) | ["Plugin hooks", "Event tracking"] | [] |
| plugin_hooks:plugin-hook-register-token-handler | plugin_hooks | plugin-hook-register-token-handler | register_token_handler(datasette) | datasette - Datasette class You can use this to access plugin configuration options via datasette.plugin_config(your_plugin_name) . Return a TokenHandler instance to provide a custom token creation and verification backend. This hook can return a single TokenHandler or a list of them. The default SignedTokenHandler uses itsdangerous signed tokens ( dstok_ prefix). Plugins can provide alternative backends such as database-backed tokens that support revocation and auditing. from datasette import hookimpl, TokenHandler class DatabaseTokenHandler(TokenHandler): name = "database" async def create_token( self, datasette, actor_id, *, expires_after=None, restrictions=None ): # Store token in database and return token string ... async def verify_token(self, datasette, token): # Look up token in database, return actor dict or None ... @hookimpl def register_token_handler(datasette): return DatabaseTokenHandler() The create_token method receives a restrictions argument which will be a TokenRestrictions instance or None . Tokens can then be created and verified using datasette.create_token() and datasette.verify_token() , which delegate to the registered handlers. If no handler is specified, the first handler is used according to pluggy call-time ordering . Use the handler parameter to select a specific backend by name: # Uses first registered handler (default) token = await datasette.create_token("user123") # Uses a specific handler by name token = await datasette.create_token( "user123", handler="database" ) # Verification tries all handlers actor = await datasette.verify_token(token) If no handlers are registered, create_token() raises Runt… | ["Plugin hooks", "Event tracking"] | [{"href": "https://pluggy.readthedocs.io/en/stable/#call-time-order", "label": "pluggy call-time ordering"}] |
| plugin_hooks:plugin-hook-track-event | plugin_hooks | plugin-hook-track-event | track_event(datasette, event) | datasette - Datasette class You can use this to access plugin configuration options via datasette.plugin_config(your_plugin_name) . event - Event Information about the event, represented as an instance of a subclass of the Event base class. This hook will be called any time an event is tracked by code that calls the datasette.track_event(...) internal method. The event object will always have the following properties: name : a string representing the name of the event, for example logout or create-table . actor : a dictionary representing the actor that triggered the event, or None if the event was not triggered by an actor. created : a datatime.datetime object in the timezone.utc timezone representing the time the event object was created. Other properties on the event will be available depending on the type of event. You can also access those as a dictionary using event.properties() . The events fired by Datasette core are documented here . This example plugin logs details of all events to standard error: from datasette import hookimpl import json import sys @hookimpl def track_event(event): name = event.name actor = event.actor properties = event.properties() msg = json.dumps( { "name": name, "actor": actor, "properties": properties, } ) print(msg, file=sys.stderr, flush=True) T… | ["Plugin hooks", "Event tracking"] | [{"href": "https://datasette.io/plugins/datasette-events-db", "label": "datasette-events-db"}] |
Advanced export
JSON shape: default, array, newline-delimited, object
CREATE TABLE [sections] ( [id] TEXT PRIMARY KEY, [page] TEXT, [ref] TEXT, [title] TEXT, [content] TEXT, [breadcrumbs] TEXT, [references] TEXT );