
scope = "Private Program"
description = """
  User with authorization to peform administrative tasks such as associating
  users to roles within the scope of of a program.<br/><br/>When a person
  creates a program they are automatically given the ProgramOwner role. This
  allows them to Edit, Delete, or Map objects to the Program. It also allows
  them to add people and assign them roles when their programs are private.
  ProgramOwner is the most powerful role.
  """
permissions = {
    "read": [
        "ObjectDocument",
        "ObjectPerson",
        "Program",
        "ProgramControl",
        "Relationship",
        "UserRole",
        "Context",
    ],
    "create": [
        "ObjectDocument",
        "ObjectPerson",
        "ProgramControl",
        "Relationship",
        "UserRole",
        "Audit",
    ],
    "view_object_page": [
        "__GGRC_ALL__"
    ],
    "update": [
        "ObjectDocument",
        "ObjectPerson",
        "Program",
        "ProgramControl",
        "Relationship",
        "UserRole"
    ],
    "delete": [
        "ObjectDocument",
        "ObjectPerson",
        "Program",
        "ProgramControl",
        "Relationship",
        "UserRole",
    ]
}


scope = "Private Program"
description = """
  User with authorization to peform administrative tasks such as associating
  users to roles within the scope of of a program.<br/><br/>When a person
  creates a program they are automatically given the ProgramOwner role. This
  allows them to Edit, Delete, or Map objects to the Program. It also allows
  them to add people and assign them roles when their programs are private.
  ProgramOwner is the most powerful role.
  """
permissions = {
    "read": [
        "ObjectDocument",
        "ObjectPerson",
        "Program",
        "ProgramControl",
        "Relationship",
        "UserRole",
        "Context",
    ],
    "create": [
        "ObjectDocument",
        "ObjectPerson",
        "ProgramControl",
        "Relationship",
        "UserRole",
        "Audit",
        "Snapshot",
    ],
    "view_object_page": [
        "__GGRC_ALL__"
    ],
    "update": [
        "ObjectDocument",
        "ObjectPerson",
        "Program",
        "ProgramControl",
        "Relationship",
        "UserRole"
    ],
    "delete": [
        "ObjectDocument",
        "ObjectPerson",
        "Program",
        "ProgramControl",
        "Relationship",
        "UserRole",
    ]
}

Add support for creating snapshots for program owner
Add support for creating snapshots for program owner

  
  scope = "Private Program"
  description = """
    User with authorization to peform administrative tasks such as associating
    users to roles within the scope of of a program.<br/><br/>When a person
    creates a program they are automatically given the ProgramOwner role. This
    allows them to Edit, Delete, or Map objects to the Program. It also allows
    them to add people and assign them roles when their programs are private.
    ProgramOwner is the most powerful role.
    """
  permissions = {
      "read": [
          "ObjectDocument",
          "ObjectPerson",
          "Program",
          "ProgramControl",
          "Relationship",
          "UserRole",
          "Context",
      ],
      "create": [
          "ObjectDocument",
          "ObjectPerson",
          "ProgramControl",
          "Relationship",
          "UserRole",
          "Audit",
+         "Snapshot",
      ],
      "view_object_page": [
          "__GGRC_ALL__"
      ],
      "update": [
          "ObjectDocument",
          "ObjectPerson",
          "Program",
          "ProgramControl",
          "Relationship",
          "UserRole"
      ],
      "delete": [
          "ObjectDocument",
          "ObjectPerson",
          "Program",
          "ProgramControl",
          "Relationship",
          "UserRole",
      ]
  }
  
Add support for creating snapshots for program owner
## Code Before:

scope = "Private Program"
description = """
  User with authorization to peform administrative tasks such as associating
  users to roles within the scope of of a program.<br/><br/>When a person
  creates a program they are automatically given the ProgramOwner role. This
  allows them to Edit, Delete, or Map objects to the Program. It also allows
  them to add people and assign them roles when their programs are private.
  ProgramOwner is the most powerful role.
  """
permissions = {
    "read": [
        "ObjectDocument",
        "ObjectPerson",
        "Program",
        "ProgramControl",
        "Relationship",
        "UserRole",
        "Context",
    ],
    "create": [
        "ObjectDocument",
        "ObjectPerson",
        "ProgramControl",
        "Relationship",
        "UserRole",
        "Audit",
    ],
    "view_object_page": [
        "__GGRC_ALL__"
    ],
    "update": [
        "ObjectDocument",
        "ObjectPerson",
        "Program",
        "ProgramControl",
        "Relationship",
        "UserRole"
    ],
    "delete": [
        "ObjectDocument",
        "ObjectPerson",
        "Program",
        "ProgramControl",
        "Relationship",
        "UserRole",
    ]
}

## Instruction:
Add support for creating snapshots for program owner
## Code After:

scope = "Private Program"
description = """
  User with authorization to peform administrative tasks such as associating
  users to roles within the scope of of a program.<br/><br/>When a person
  creates a program they are automatically given the ProgramOwner role. This
  allows them to Edit, Delete, or Map objects to the Program. It also allows
  them to add people and assign them roles when their programs are private.
  ProgramOwner is the most powerful role.
  """
permissions = {
    "read": [
        "ObjectDocument",
        "ObjectPerson",
        "Program",
        "ProgramControl",
        "Relationship",
        "UserRole",
        "Context",
    ],
    "create": [
        "ObjectDocument",
        "ObjectPerson",
        "ProgramControl",
        "Relationship",
        "UserRole",
        "Audit",
        "Snapshot",
    ],
    "view_object_page": [
        "__GGRC_ALL__"
    ],
    "update": [
        "ObjectDocument",
        "ObjectPerson",
        "Program",
        "ProgramControl",
        "Relationship",
        "UserRole"
    ],
    "delete": [
        "ObjectDocument",
        "ObjectPerson",
        "Program",
        "ProgramControl",
        "Relationship",
        "UserRole",
    ]
}
