Пример #1
0
    def test_remove_excerpt_for_agendaitem_removes_relation_in_submitted_proposal(
            self, browser):
        self.login(self.committee_responsible, browser)
        agenda_item = self.schedule_proposal(self.meeting,
                                             self.submitted_proposal)
        agenda_item.decide()
        excerpt1 = agenda_item.generate_excerpt('excerpt 1')
        agenda_item.generate_excerpt('excerpt 2')

        self.assertEqual(2, len(self.submitted_proposal.excerpts))
        self.assertEqual(
            2, len(self.submitted_proposal.get_excerpts(include_trashed=True)))
        self.assertEqual(
            2, len(agenda_item.get_excerpt_documents(include_trashed=True)))
        self.assertEqual(2, len(list(_relations(self.submitted_proposal))))

        ITrashable(excerpt1).trash()
        with elevated_privileges():
            Remover([excerpt1]).remove()

        self.assertEqual(1, len(self.submitted_proposal.excerpts))
        self.assertEqual(
            1, len(self.submitted_proposal.get_excerpts(include_trashed=True)))
        self.assertEqual(
            1, len(agenda_item.get_excerpt_documents(include_trashed=True)))
        self.assertEqual(1, len(list(_relations(self.submitted_proposal))))
Пример #2
0
    def test_removing_is_journalized_on_object(self):
        Remover([self.mail, self.document]).remove()

        self.assert_journal_entry(self.mail, OBJECT_REMOVED,
                                  u'Document T\xe4st Mail removed.')
        self.assert_journal_entry(self.document, OBJECT_REMOVED,
                                  u'Document T\xe4st Doc removed.')
Пример #3
0
    def test_error_when_untrashing_removed_document(self, browser):
        self.login(self.manager, browser=browser)

        data = self.make_path_param(self.empty_document)
        data['_authenticator'] = createToken()

        self.trash_documents(self.empty_document)
        Remover([self.empty_document]).remove()

        # Removed document cannot be untrashed
        browser.open(self.empty_dossier, view="untrashed", data=data)

        self.assertTrue(ITrashed.providedBy(self.empty_document))
        self.assertEquals(
            [u'Untrashing {} is forbidden'.format(self.empty_document.title)],
            error_messages())

        # When restored, document can be untrashed
        api.content.transition(
            obj=self.empty_document,
            transition=self.empty_document.restore_transition)

        self.assertEqual(self.empty_document.active_state,
                         api.content.get_state(self.empty_document))

        browser.open(self.empty_dossier, view="untrashed", data=data)
        self.assertFalse(ITrashed.providedBy(self.empty_document))
Пример #4
0
    def test_raises_runtimeerror_when_preconditions_are_not_satisified(self):
        doc1 = create(Builder('document').trashed())
        doc2 = create(Builder('document'))

        with self.assertRaises(RuntimeError) as cm:
            Remover([doc1, doc2]).remove()

        self.assertEquals('RemoveConditions not satisified', str(cm.exception))
Пример #5
0
    def test_raises_unauthorized_when_user_does_not_have_remove_permission(
            self):
        self.login(self.regular_user)

        self.trash_documents(self.empty_document)

        with self.assertRaises(Unauthorized):
            Remover([self.empty_document]).remove()
Пример #6
0
    def test_raises_runtimeerror_when_preconditions_are_not_satisified(self):
        self.login(self.manager)

        self.trash_documents(self.inbox_document)

        with self.assertRaises(RuntimeError) as cm:
            Remover([self.document, self.inbox_document]).remove()

        self.assertEqual('RemoveConditions not satisified', str(cm.exception))
Пример #7
0
    def test_changes_state_to_removed_for_all_documents(self):
        doc1 = create(Builder('document').trashed())
        doc2 = create(Builder('document').trashed())

        Remover([doc1, doc2]).remove()

        self.assertEquals(Document.removed_state,
                          api.content.get_state(obj=doc1))
        self.assertEquals(Document.removed_state,
                          api.content.get_state(obj=doc2))
Пример #8
0
    def test_removing_is_journalized_on_parent(self):
        self.login(self.manager)

        self.trash_documents(self.empty_document, self.mail_eml)
        Remover([self.empty_document, self.mail_eml]).remove()

        self.assert_journal_entry(self.subdossier, OBJECT_REMOVED,
                                  u'Document L\xe4\xe4r removed.')
        self.assert_journal_entry(self.dossier, OBJECT_REMOVED,
                                  u'Document Die B\xfcrgschaft removed.')
    def test_document_must_not_already_be_removed(self):
        self.login(self.manager)

        self.trash_documents(self.empty_document)
        Remover([self.empty_document]).remove()

        checker = RemoveConditionsChecker(self.empty_document)
        self.assertFalse(checker.removal_allowed())
        self.assert_error_messages([u'The document is already removed.'],
                                   checker.error_msg)
Пример #10
0
    def test_raises_unauthorized_when_user_does_not_have_remove_permission(
            self):
        doc1 = create(Builder('document').trashed())

        create_plone_user(self.portal, 'hugo.boss')
        self.login(user_id='hugo.boss')
        setRoles(self.portal, 'hugo.boss', ['Member'])
        transaction.commit()

        with self.assertRaises(Unauthorized):
            Remover([doc1]).remove()
Пример #11
0
    def test_changes_state_to_removed_for_all_documents(self):
        self.login(self.manager)

        documents = [self.inbox_document, self.empty_document]
        self.trash_documents(*documents)

        Remover(documents).remove()
        self.assertEqual(Document.removed_state,
                         api.content.get_state(obj=self.empty_document))
        self.assertEqual(Document.removed_state,
                         api.content.get_state(obj=self.inbox_document))
Пример #12
0
    def setUp(self):
        super(TestRestoreJournalization, self).setUp()

        self.login(self.manager)

        self.trash_documents(self.empty_document, self.mail_eml)
        Remover([self.empty_document, self.mail_eml]).remove()

        api.content.transition(obj=self.mail_eml,
                               transition=self.mail_eml.restore_transition)
        api.content.transition(
            obj=self.empty_document,
            transition=self.empty_document.restore_transition)
Пример #13
0
    def test_remove_excerpt_for_adhoc_agendaitem_removes_entry_from_sql_database(
            self, browser):
        self.login(self.committee_responsible, browser)
        agenda_item = self.schedule_ad_hoc(self.meeting, 'Foo')
        agenda_item.decide()
        excerpt1 = agenda_item.generate_excerpt('excerpt 1')
        agenda_item.generate_excerpt('excerpt 2')

        self.assertEqual(
            2, len(agenda_item.get_excerpt_documents(include_trashed=True)))
        excerpts = Excerpt.query.filter(
            Excerpt.agenda_item_id == agenda_item.agenda_item_id).all()
        self.assertEqual(2, len(excerpts))

        ITrashable(excerpt1).trash()
        with elevated_privileges():
            Remover([excerpt1]).remove()

        self.assertEqual(
            1, len(agenda_item.get_excerpt_documents(include_trashed=True)))
        excerpts = Excerpt.query.filter(
            Excerpt.agenda_item_id == agenda_item.agenda_item_id).all()
        self.assertEqual(1, len(excerpts))
Пример #14
0
 def remove_objects(self):
     documents = self.get_selected_documents()
     Remover(documents).remove()