DocumentShare
Explicit share of a document with a user or role.
Enables fine-grained document-level sharing beyond the default
owner-based or team-based RLS.
Attributes:
doctype_name: The DocType being shared (e.g., "Invoice")
doc_id: Document identifier (e.g., "INV-001" or UUID)
shared_with: User ID or Role name to share with
share_type: Whether sharing with USER or ROLE
granted_permissions: List of permissions granted (e.g., ["read", "write"])
note: Optional note explaining why the share was created
Source: document_share.py
Fields
| Field | Type | Required | Description | Validators |
|---|---|---|---|---|
| doctype_name | str | DocType name of the shared document | - | |
| doc_id | str | ID or name of the document being shared | - | |
| shared_with | str | User ID or Role name to share with | - | |
| share_type | ShareType | Whether sharing with a user or role | - | |
| granted_permissions | list[str] | Permissions granted: read, write, delete, etc. | - | |
| note | str | None | Reason for sharing (for audit) |
Permissions
| Role | Create | Delete | Read | Write |
|---|---|---|---|---|
| Admin | ✓ | ✓ | ✓ | ✓ |
| Employee | ✓ | ✓ | ✓ | |
| Manager | ✓ | ✓ | ✓ |
Configuration
| Setting | Value |
|---|---|
| Submittable | False |
| Track Changes | True |
Controller
Controller hooks are implemented in *_controller.py files.
Available lifecycle hooks:
validate()- Called before save, raise exceptions for validation errorsbefore_insert()- Called before inserting a new documentafter_insert()- Called after successfully insertingbefore_save()- Called before saving (insert or update)after_save()- Called after savingbefore_delete()- Called before deletingafter_delete()- Called after deleting