Saving Projects2 (Python)

Saving Projects2 (Python)
 1impact.gui.output_toolbox.clear()
 2drawing = impact.active_drawing
 3database = impact.active_database
 4
 5if not drawing.isNone():
 6
 7    if drawing.drawing_type == ipDrawingType.dtProject:
 8        saveOpts = impact.creator.drawing_save_options()
 9        dbItem = drawing.database_item
10
11        # Here, if ONE_UP.OU_CADNUM is required, these should fail and report OU_CADNUM is missing.
12        # or if there is an existing project having same D_CODENUM, this should fail and report duplicate.
13        if dbItem.isNone():
14            folder = None
15            try:
16                folder = database.projects.find("COMTests")
17            except Exception as exc:
18                pass
19            impact.gui.output_toolbox.add(f"Failed to create object via database.projects.find(): {exc}")
20            drawing.database_values.save("D_GROUP", folder.key)
21            drawing.database_values.save("D_CUSTOMER", "3")
22            drawing.activelayer.database_values.save("OU_CADNUM", "")
23            drawing.activelayer.database_values.save("LAYERS.L_NAME", "a")
24            drawing.database_values.save("D_CODENUM", "P071429")
25            drawing.save_as2(saveOpts)
26        else:
27            drawing.activelayer.database_values.save("OU_CADNUM", "")
28            drawing.save2(saveOpts)
29
30        if saveOpts.error_type == ipDrawingSaveErrorType.seNone:
31            impact.gui.output_toolbox.add("Successfully saved '" + drawing.full_name + "'")
32        elif saveOpts.error_type == ipDrawingSaveErrorType.seUnknown:
33            impact.gui.output_toolbox.add("Unable to save " + drawing.full_name + " - unknown error")
34        else:
35
36            impact.gui.output_toolbox.add("Unable to save " + drawing.full_name)
37            columns = saveOpts.error_column_names
38
39            if saveOpts.error_layer.isNone():
40                objName = "in project data:"
41            else:
42                objName = "in " + saveOpts.error_layer.layer_type + " layer '" + saveOpts.error_layer.full_name + "' data:"
43
44            if saveOpts.error_type == ipDrawingSaveErrorType.seDuplicateData:
45                impact.gui.output_toolbox.add("Duplicate value " + objName)
46            else:
47                impact.gui.output_toolbox.add("Missing values " + objName)
48
49            for column in columns:
50                impact.gui.output_toolbox.add("   " + column)
51
52else:
53    impact.gui.output_toolbox.add("Current drawing is not a project")