angee.storage.signals
Storage-owned signals and receivers.
REBAC needs no signal work here: every storage relation is field-backed or const-backed in permissions.zed, so the engine derives them from the rows at check time and stores no tuples. What remains is the addon's own extension point (file_finalized) and the per-user Trash smart folder.
file_finalized
Sent (on commit) when a File flips to READY.
Receives sender (the concrete file model), instance, and actor. Rendition, virus-scan, extraction, and indexing addons subscribe here.
connect
python
def connect() -> NoneWire the per-user Trash smart folder to user creation.
create_trash_folder
python
def create_trash_folder(sender: type[Model],
instance: Model,
created: bool,
raw: bool = False,
**kwargs: Any) -> NoneEnsure each user owns exactly one Trash smart folder.