Advanced Release

Advanced Release
  1# Advanced Release example
  2# to run this script you will need a customer with code "(DEFAULT)"
  3# and a project folder called "COMTests"
  4# and you need not to already have a project called "COM Update Test"
  5
  6
  7db = impact.active_database
  8
  9
 10def describe_action(action):
 11    if action == ipReleaseAction.raUpdate:
 12        impact.gui.output_toolbox.add("Action: Updating")
 13    elif action == ipReleaseAction.raDiscard:
 14        impact.gui.output_toolbox.add("Action: Discarding")
 15    elif action == ipReleaseAction.raRelease:
 16        impact.gui.output_toolbox.add("Action: Releasing")
 17    elif action == ipReleaseAction.raKeepOut:
 18        impact.gui.output_toolbox.add("Action: Keeping Out")
 19
 20def describe_release_action(ra):
 21    describe_action(ra.action)
 22    impact.gui.output_toolbox.add("Comment: " + str(ra.comment))
 23
 24    impact.gui.output_toolbox.add("Keep Working: " + str(ra.keep_working))
 25    impact.gui.output_toolbox.add("Lock: " + str(ra.lock))
 26    impact.gui.output_toolbox.add("Create Revision: " + str(ra.create_revision))
 27
 28    if ra.reassign_to is not None:
 29        impact.gui.output_toolbox.add("Reassign To: " + str(ra.reassign_to.login_id))
 30        impact.gui.output_toolbox.add("Reassign without update: " + str(ra.reassign_without_update))
 31
 32    impact.gui.output_toolbox.add("customer Changed: " + str(ra.customer_changed))
 33    impact.gui.output_toolbox.add("Project Info Changed: " + str(ra.project_info_changed))
 34
 35    impact.gui.output_toolbox.add("Release Layer Count: " + str(ra.layers.count))
 36
 37    for layer in ra.layers:
 38        impact.gui.output_toolbox.add("Layer Key: " + str(layer.key))
 39        impact.gui.output_toolbox.add("Layer Name: " + str(layer.name))
 40        impact.gui.output_toolbox.add("Type: " + str(layer.type))
 41        impact.gui.output_toolbox.add("Type Key: " + str(layer.type_key))
 42        impact.gui.output_toolbox.add("Modified: " + str(layer.modified))
 43        describe_action(layer.action)
 44        impact.gui.output_toolbox.add("Added: " + str(layer.added))
 45        impact.gui.output_toolbox.add("Deleted: " + str(layer.deleted))
 46
 47
 48impact.gui.output_toolbox.clear()
 49
 50drawing = db.create_item(ipDrawingType.dtProject, "")
 51if drawing is not None:
 52    impact.gui.output_toolbox.add("Created new project")
 53
 54    cus = db.customers.find_by_code("(DEFAULT)")
 55    if cus is not None:
 56        drawing.customer = cus
 57
 58        # Create three layers A, B and C
 59        drawing.active_layer.full_name = "A"
 60        drawing.layers.add("B", "ONE_UP", drawing.active_layer)
 61        drawing.layers.add("C", "ONE_UP", drawing.active_layer)
 62
 63        impact.gui.output_toolbox.add("Finding folder r'\\COMTests'")
 64        folder = db.projects.find("COMTests")
 65
 66        if folder is not None:
 67            if drawing.save_as("", "COM Update Test", "", folder, True):
 68                impact.gui.output_toolbox.add("Successfully saved project")
 69
 70                db_item = drawing.database_item
 71
 72                # Modify two of the layers in the drawing and save
 73                drawing.active_layer = drawing.layers.item("A")
 74                drawing.active_layer.active_block.move_ad(0, 0)
 75                drawing.active_layer.active_block.line_ad(100, 100)
 76
 77                drawing.active_layer = drawing.layers.item("C")
 78                drawing.active_layer.active_block.move_ad(0, 0)
 79                drawing.active_layer.active_block.line_ad(100, -100)
 80
 81                if drawing.save():
 82                    ra = db_item.release_action
 83
 84                    ra.action = ipReleaseAction.raUpdate
 85                    ra.comment = "Updated from COM"
 86                    ra.create_revision = True
 87                    ra.keep_working = False
 88
 89                    describe_release_action(ra)
 90
 91                    if db_item.close_and_release():
 92                        impact.gui.output_toolbox.add("Successfully closed and released the project")
 93                    else:
 94                        impact.gui.output_toolbox.add("Error: Unable to release the project")
 95                else:
 96                    impact.gui.output_toolbox.add("Error: Unable to save the modified project")
 97            else:
 98                impact.gui.output_toolbox.add("Error: Unable to save the new project")
 99        else:
100            impact.gui.output_toolbox.add("Error: Unable to find project folder")
101    else:
102        impact.gui.output_toolbox.add("Error: Unable to find customer")
103else:
104    impact.gui.output_toolbox.add("Error: Unable to create new project")