Creating Documents (Python)

Creating Documents (Python)
 1ot = impact.gui.output_toolbox
 2db = impact.active_database
 3
 4def DescribeDoc(doc, method):
 5    if not doc.isNone():
 6        ot.add("Document '" + doc.name + "' successfully created with " + method)
 7        ot.add("description: " + doc.description)
 8        ot.add("Checkin-Comment: " + doc.comment)
 9        ot.add("Added: " + str(doc.added_date_time) + " by " + doc.added_by.login_id)
10        ot.add("version: " + doc.version.version_as_string)
11        ot.add("Size: " + str(doc.size) + " bytes")
12    else:
13        ot.add("Unable to create new document with " + method)
14
15ot.clear()
16docs = db.documents
17
18if docs.isNone():
19    ot.add("No document support in the database")
20elif db.settings.other_documents:
21    ot.add("Other document support is enabled in this database")
22    ot.add("Major and minor versions support: " + str(db.settings.document_settings.supports_major_and_minor_versions))
23    ot.add(str(docs.total_count) + " documents currently in the database")
24
25    # using deprecated Add
26    doc = None
27    try:
28        doc = docs.add(r"C:\\Documents\\ExampleDocument1.docx", "My First Document")
29    except Exception as exc:
30        pass
31    impact.gui.output_toolbox.add(f"Failed to create object via docs.add(): {exc}")
32
33    DescribeDoc(doc, "Add")
34
35    # using Add2 without values
36    doc2 = None
37    try:
38        doc2 = docs.add2(r"C:\\Documents\\ExampleDocument2.docx", None, ipDocumentVersion.dvMajor, "My Second Document")
39    except Exception as exc:
40        pass
41    impact.gui.output_toolbox.add(f"Failed to create object via docs.add2(): {exc}")
42
43    DescribeDoc(doc2, "Add2 (no values)")
44
45    # using Add2 with values
46    # first determine document type and columns for file
47    docType = db.settings.document_settings.mime_types.find_type_for_extension(r"C:\\Documents\\ExampleDocument3.docx")
48
49    ot.add("Document Type: " + docType.key)
50
51    # create some values and populate using ipDocumentKnownColumn values
52    columns = docType.columns
53    values = docType.create_column_values()
54
55    values.save(columns.known_item(ipDocumentKnownColumn.dkcName).name, "ExampleDocument3")
56    values.save(columns.known_item(ipDocumentKnownColumn.dkcDescription).name, "Some description")
57
58    # to assign a group must use the group ID
59    group = None
60    try:
61        group = db.settings.document_settings.groups.item("GroupA")
62    except Exception as exc:
63        pass
64    impact.gui.output_toolbox.add(f"Failed to create object via db.settings.document_settings.groups.item(): {exc}")
65
66    if not group.isNone():
67        values.save(columns.known_item(ipDocumentKnownColumn.dkcGroup).name, group.ID)
68    doc3 = None
69    try:
70        doc3 = docs.add2(r"C:\\Documents\\ExampleDocument3.docx", values, ipDocumentVersion.dvMinor, "My Third Document")
71    except Exception as exc:
72        pass
73    impact.gui.output_toolbox.add(f"Failed to create object via docs.add2(): {exc}")
74
75    DescribeDoc(doc3, "Add2 (with values)")
76
77    # must reload IDocuments
78    docs2 = db.documents
79    ot.add(str(docs2.total_count) + " documents currently in the database")
80
81else:
82    ot.add("No other document support in the database")