def test_does_not_preserve_local_roles_from_committee_group(self, browser): assignment_type = ASSIGNMENT_VIA_COMMITTEE_GROUP assignment_class = RoleAssignment.registry[assignment_type] self.login(self.administrator, browser=browser) manager = RoleAssignmentManager(self.subdossier) manager.add_or_update_assignment( assignment_class(self.regular_user.id, ['Reader', 'Editor', 'Contributor'], self.committee)) manager = RoleAssignmentManager(self.subdossier) assignments = manager.get_assignments_by_cause(assignment_type) self.assertEqual(1, len(assignments)) browser.open(self.dossier, data=self.make_path_param(self.subdossier), view="copy_items") with self.observe_children(self. empty_repofolder) as children: browser.open(self.empty_repofolder) browser.click_on('Paste') self.assertEqual(1, len(children.get('added'))) subdossier_copy = children.get('added').pop() manager = RoleAssignmentManager(subdossier_copy) assignments = manager.get_assignments_by_cause(assignment_type) self.assertEqual(0, len(assignments), "{} should not get copied".format(assignment_class))
def test_preserves_local_roles_from_invitation(self, browser): assignment_type = ASSIGNMENT_VIA_INVITATION assignment_class = RoleAssignment.registry[assignment_type] self.login(self.administrator, browser=browser) manager = RoleAssignmentManager(self.subdossier) manager.add_or_update_assignment( assignment_class(self.regular_user.id, ['Reader', 'Editor', 'Contributor'], self.workspace)) manager = RoleAssignmentManager(self.subdossier) assignments = manager.get_assignments_by_cause(assignment_type) self.assertEqual(1, len(assignments)) browser.open(self.dossier, data=self.make_path_param(self.subdossier), view="copy_items") with self.observe_children(self. empty_repofolder) as children: browser.open(self.empty_repofolder) browser.click_on('Paste') self.assertEqual(1, len(children.get('added'))) subdossier_copy = children.get('added').pop() manager = RoleAssignmentManager(subdossier_copy) assignments = manager.get_assignments_by_cause(assignment_type) self.assertEqual(1, len(assignments), "{} should get copied".format(assignment_class)) assignment = assignments[0] expected_assignment = {'cause': assignment_type, 'roles': ['Reader', 'Editor', 'Contributor'], 'reference': Oguid.for_object(self.workspace).id, 'principal': self.regular_user.id} self.assertEqual(expected_assignment, assignment)
def test_status_message_shown_when_local_roles_on_subdossier_are_copied(self, browser): assignment_type = ASSIGNMENT_VIA_SHARING assignment_class = RoleAssignment.registry[assignment_type] self.login(self.administrator, browser=browser) browser.open(self.dossier, data=self.make_path_param(self.subdossier), view="copy_items") browser.open(self.empty_repofolder) browser.click_on('Paste') self.assertItemsEqual(info_messages(), ["Objects from clipboard successfully pasted."]) manager = RoleAssignmentManager(self.subsubdossier) manager.add_or_update_assignment( assignment_class(self.regular_user.id, ['Reader', 'Editor', 'Contributor'])) manager = RoleAssignmentManager(self.subsubdossier) assignments = manager.get_assignments_by_cause(assignment_type) self.assertEqual(1, len(assignments)) browser.open(self.dossier, data=self.make_path_param(self.subdossier), view="copy_items") browser.open(self.empty_repofolder) browser.click_on('Paste') self.assertItemsEqual(info_messages(), ["Some local roles were copied with the objects", "Objects from clipboard successfully pasted."])
def add_role_assignment_to_proposal(self, document, task): document_manager = RoleAssignmentManager(document) # abort if we do not have an assignment for local roles in the # document. it might be this is one of the migrated tasks where the # assignment has only been set for sharing but not based on the local # roles for the tasks. if not document_manager.get_assignments_by_cause(ASSIGNMENT_VIA_TASK): return # if we have an assignment it should be safe to set the assignment # again as would happen when the task has been modified. LocalRolesSetter(task).set_roles(event=None)