Comment on page
Plugins
When customizing your Agent behavior, it is quite common to have to perform the same tasks on multiple Fields and Collections.
Plugins are the answer to that need, and you are strongly encouraged to use them everywhere you notice that your customization files could benefit from code factorization.
Plugins are used by either importing a module, or installing the relevant package, and then calling the
use
method.Depending on the plugin, options may be provided.
# The .use() method can be called both on the agent and on collections.
agent.use(
# Some plugins do not require options
RemoveTimestamps
# Others do
).customize_collection('accounts').use(CreateFileField, { "fieldname": 'avatar' })
A Plugin is nothing more than a
class
that implements our Plugin interface
with an async method
and can perform customizations.from forestadmin.datasource_toolkit.plugins.plugin import Plugin
# from forestadmin.datasource_toolkit.datasource_customizer.collection_customizer import (
# CollectionCustomizer
# )
# from forestadmin.datasource_toolkit.datasource_customizer.datasource_customizer import (
# DatasourceCustomizer
# )
class RemoveTimestamps(Plugin):
async def run(
self,
datasource_customizer: "DatasourceCustomizer", # noqa: F821
collection_customizer: Optional["CollectionCustomizer"] = None, # noqa: F821
options: Optional[Dict] = {},
):
# Allow the plugin to be used both on the dataSource or on individual collections
collections = (
[collection_customizer]
if collection_customizer
else datasource_customizer.collections
)
for current_collection in collections:
collection.remove_field("createdAt")
collection.remove_field("updatedAt")
Last modified 1mo ago