insert()
Creates a new object on the server and returns (object_id, object_type_id). Internally uses dms.XMLInsert. The passed model instance is not mutated.
If the fully populated instance is needed directly after creation, insert_and_get() is the more compact alternative.
1. Signature
-
Sync
-
Async
ecm.dms.insert(
model: T,
files: list[JobRequestFile] | None = None,
*,
folder_id: int | ECMFolderModel | None = None,
register_id: int | ECMRegisterModel | None = None,
check_mandatory: bool = True,
) -> tuple[int, int]
await ecm.dms.insert(
model: T,
files: list[JobRequestFile] | None = None,
*,
folder_id: int | ECMFolderModel | None = None,
register_id: int | ECMRegisterModel | None = None,
check_mandatory: bool = True,
) -> tuple[int, int]
2. Parameters
| Name | Type | Description |
|---|---|---|
|
|
The model instance to create, with the desired field values set. The instance is not mutated. |
|
|
Optional list of files to attach to the new document. Only allowed for |
|
|
Folder to place the object in — either a numeric ID or an |
|
|
Register to file the document in ( |
|
|
When |
4. Exceptions
ECMException-
The server rejected the insert (
ObjectID == -1). ECMMissingArgumentException-
folder_idis missing for a register or document model. Subclass ofECMException. TypeError-
fileswas provided for a folder or register model. ValueError-
check_mandatory=Trueand a required field is not set.
5. Examples
5.1. Simple folder
-
Sync
-
Async
object_id, object_type_id = ecm.dms.insert(
InvoiceFolder(Title="Invoice 2024", Year=2024)
)
print(object_id)
object_id, object_type_id = await ecm.dms.insert(
InvoiceFolder(Title="Invoice 2024", Year=2024)
)
print(object_id)
5.2. Register inside a folder
-
Sync
-
Async
object_id, _ = ecm.dms.insert(
InvoiceRegister(Name="Incoming invoices"),
folder_id=folder.system.id,
)
object_id, _ = await ecm.dms.insert(
InvoiceRegister(Name="Incoming invoices"),
folder_id=folder.system.id,
)
5.3. Document with file and filing location
-
Sync
-
Async
from ecmind_blue_client.rpc import JobRequestFileFromPath
object_id, _ = ecm.dms.insert(
InvoiceDocument(Title="Invoice No. 42"),
files=[JobRequestFileFromPath("/tmp/invoice.pdf")],
folder_id=folder.system.id,
register_id=register.system.id,
)
print(object_id)
from ecmind_blue_client.rpc import JobRequestFileFromPath
object_id, _ = await ecm.dms.insert(
InvoiceDocument(Title="Invoice No. 42"),
files=[JobRequestFileFromPath("/tmp/invoice.pdf")],
folder_id=folder.system.id,
register_id=register.system.id,
)
print(object_id)
5.4. Passing model instances as folder_id / register_id
Instead of a numeric ID, a model instance can be passed directly — insert() extracts the ID automatically:
-
Sync
-
Async
folder = ecm.dms.insert_and_get(InvoiceFolder(Title="Invoice 2024"))
register = ecm.dms.insert_and_get(
InvoiceRegister(Name="Incoming"),
folder_id=folder, # ECMFolderModel instance instead of int
)
object_id, _ = ecm.dms.insert(
InvoiceDocument(Title="Invoice No. 42"),
folder_id=folder, # ECMFolderModel instance
register_id=register, # ECMRegisterModel instance
)
folder = await ecm.dms.insert_and_get(InvoiceFolder(Title="Invoice 2024"))
register = await ecm.dms.insert_and_get(
InvoiceRegister(Name="Incoming"),
folder_id=folder,
)
object_id, _ = await ecm.dms.insert(
InvoiceDocument(Title="Invoice No. 42"),
folder_id=folder,
register_id=register,
)
5.5. Disabling mandatory field validation
-
Sync
-
Async
# check_mandatory=False: no error even if required fields are missing
object_id, _ = ecm.dms.insert(
InvoiceFolder(Title="Draft"),
check_mandatory=False,
)
object_id, _ = await ecm.dms.insert(
InvoiceFolder(Title="Draft"),
check_mandatory=False,
)
6. See also
-
insert_and_get() — combines
insert()andget()in one call when the full instance is needed immediately -
update() — updates an existing object