Exemplo n.º 1
0
    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))
Exemplo n.º 2
0
    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_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)
Exemplo n.º 5
0
    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 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."])
Exemplo n.º 7
0
    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)