def test_doc_from_oneoffixx_template_available_if_oneoffixxtemplate_feature_enabled(self, browser):
        self.activate_feature("officeconnector-checkout")
        self.login(self.manager, browser)
        browser.open(self.dossier)

        self.assertEquals(
            ['Document',
             'document_with_template',
             'Task',
             'Add task from template',
             'Subdossier',
             'Participant'],
            factoriesmenu.addable_types())

        self.activate_feature("oneoffixx")
        browser.open(self.dossier)
        self.assertEquals(
            ['Document',
             'document_with_template',
             'document_with_oneoffixx_template',
             'Task',
             'Add task from template',
             'Subdossier',
             'Participant'],
            factoriesmenu.addable_types())
    def test_is_only_addable_by_manager(self, browser):
        browser.login().open()

        self.grant('Administrator')
        browser.reload()
        self.assertNotIn('Inbox Container', factoriesmenu.addable_types())

        self.grant('Manager')
        browser.reload()
        self.assertIn('Inbox Container', factoriesmenu.addable_types())
示例#3
0
    def test_is_only_addable_by_manager(self, browser):
        browser.login().open(self.portal)

        self.grant('Administrator')
        browser.reload()
        self.assertNotIn('Template Folder', factoriesmenu.addable_types())

        self.grant('Manager')
        browser.reload()
        self.assertIn('Template Folder', factoriesmenu.addable_types())
    def test_max_depth_causes_repositories_to_not_be_addable(self, browser):
        self.login(self.administrator, browser)

        browser.open(self.leaf_repofolder)
        self.assertIn('RepositoryFolder', factoriesmenu.addable_types())

        api.portal.set_registry_record(
            'maximum_repository_depth', 1,
            interface=IRepositoryFolderRecords)
        browser.reload()
        self.assertNotIn('RepositoryFolder', factoriesmenu.addable_types())
示例#5
0
    def test_max_depth_causes_repositories_to_not_be_addable(self, browser):
        self.login(self.administrator, browser)

        browser.open(self.leaf_repofolder)
        self.assertIn('RepositoryFolder', factoriesmenu.addable_types())

        api.portal.set_registry_record('maximum_repository_depth',
                                       1,
                                       interface=IRepositoryFolderRecords)
        browser.reload()
        self.assertNotIn('RepositoryFolder', factoriesmenu.addable_types())
    def test_proposal_templates_not_addable_when_feature_disabled(
            self, browser):
        vorlagen = create(Builder('templatefolder').titled(u'Vorlagen'))
        browser.login().open(vorlagen)
        self.assertIn('Proposal Template', factoriesmenu.addable_types())

        api.portal.set_registry_record('is_word_implementation_enabled',
                                       False,
                                       interface=IMeetingSettings)
        transaction.commit()
        browser.reload()
        self.assertNotIn('Proposal Template', factoriesmenu.addable_types())
示例#7
0
    def test_cannot_add_a_contact_with_contact_feature_enabled(self, browser):
        contactfolder = create(Builder('contactfolder'))

        browser.login().open(contactfolder)
        self.assertIn('Contact', factoriesmenu.addable_types())
        browser.visit(contactfolder, view="++add++opengever.contact.contact")

        api.portal.set_registry_record(
          'is_feature_enabled', True, interface=IContactSettings)
        transaction.commit()

        browser.open(contactfolder)
        self.assertNotIn('Contact', factoriesmenu.addable_types())
        with self.assertRaises(InsufficientPrivileges):
            browser.visit(contactfolder, view="++add++opengever.contact.contact")
示例#8
0
 def test_businesscase_dossier_is_not_addable_when_disallowed(
         self, browser):
     self.login(self.regular_user, browser)
     self.leaf_repofolder.allow_add_businesscase_dossier = False
     browser.open(self.leaf_repofolder)
     self.assertNotIn('Business Case Dossier',
                      factoriesmenu.addable_types())
    def test_user_can_only_add_images_on_notices_he_created(self, browser):
        user = create(Builder('user'))

        noticeboard = create(Builder('noticeboard'))
        category = create(Builder('noticecategory').within(noticeboard))
        othernotice = create(Builder('notice')
                             .titled(u'This is a Notice')
                             .having(accept_conditions=True,
                                     text=RichTextValue('Something'),
                                     price='100')
                             .within(category))

        browser.login(user).visit(othernotice)
        self.assertFalse(factoriesmenu.visible())

        browser.visit(category)
        browser.css('a.add-link').first.click()  # factoriesmenu.add('Notice')

        browser.fill(
            {
                'Title': u'This is a Notice',
                'Price': '100',
                'Terms and Conditions': True,
                'E-Mail': u'*****@*****.**',
                'Text': u'Anything',
            }
        )
        browser.find_button_by_label('Save').click()
        self.assertEqual(
            ['NoticeImage', ],
            factoriesmenu.addable_types())
    def test_addable_types(self, browser):
        templatedossier = create(Builder('templatedossier'))
        browser.login().open(templatedossier)

        self.assertEquals(
            ['Document', 'TaskTemplateFolder', 'Template Dossier'],
            factoriesmenu.addable_types())
    def test_is_only_addable_by_manager(self, browser):
        browser.login().open()

        self.grant('Administrator')
        browser.reload()
        self.assertNotIn(
            'Inbox Container',
            factoriesmenu.addable_types()
            )

        self.grant('Manager')
        browser.reload()
        self.assertIn(
            'Inbox Container',
            factoriesmenu.addable_types()
            )
    def test_addable_types(self, browser):
        templatedossier = create(Builder('templatedossier'))
        browser.login().open(templatedossier)

        self.assertEquals(
            ['Document', 'TaskTemplateFolder', 'Template Dossier'],
            factoriesmenu.addable_types())
    def test_is_only_addable_by_manager(self, browser):
        browser.login().open(self.portal)

        self.grant('Administrator')
        browser.reload()
        self.assertNotIn(
            'Template Folder',
            factoriesmenu.addable_types()
            )

        self.grant('Manager')
        browser.reload()
        self.assertIn(
            'Template Folder',
            factoriesmenu.addable_types()
            )
    def test_addable_types_with_meeting_feature(self, browser):
        templatefolder = create(Builder('templatefolder'))
        browser.login().open(templatefolder)

        self.assertEquals([
            'Document', 'Sablon Template', 'TaskTemplateFolder',
            'Template Folder'
        ], factoriesmenu.addable_types())
    def test_manager_addable_types(self, browser):
        self.grant('Manager')
        templatefolder = create(Builder('templatefolder'))
        browser.login().open(templatefolder)

        self.assertEquals(
            ['Document', 'TaskTemplateFolder', 'Template Folder'],
            factoriesmenu.addable_types())
示例#16
0
    def test_addable_types(self, browser):
        dossiertemplate = create(
            Builder('dossiertemplate').within(self.templatefolder))

        browser.login().open(dossiertemplate)

        self.assertEquals(['Document', 'Subdossier'],
                          factoriesmenu.addable_types())
示例#17
0
 def assert_workspace_addable(self, expect_is_addable, browser=default_browser):
     # Requires access to workspace root.
     browser.open(self.workspace_root)
     if expect_is_addable:
         self.assertTrue(factoriesmenu.visible())
         self.assertIn('Workspace', factoriesmenu.addable_types())
     else:
         self.assertFalse(factoriesmenu.visible())
示例#18
0
 def test_addable_types_works_with_restrictions_entry(self, browser):
     # Regression:
     # The "Restrictions..." entry in the factories menu, as it exists
     # on folders, contains unicode characters and did break everything.
     # This test verifies that this still works.
     folder = create(Builder('folder'))
     browser.login(SITE_OWNER_NAME).visit(folder)
     self.assertIn(u'Restrictions\u2026', factoriesmenu.addable_types())
示例#19
0
    def test_manager_addable_types(self, browser):
        self.grant('Manager')
        templatefolder = create(Builder('templatefolder'))
        browser.login().open(templatefolder)

        self.assertEquals(
            ['Document', 'TaskTemplateFolder', 'Template Folder'],
            factoriesmenu.addable_types())
示例#20
0
    def test_doc_from_oneoffixx_template_available_if_oneoffixxtemplate_feature_enabled(
            self, browser):
        self.activate_feature("officeconnector-checkout")
        self.login(self.manager, browser)
        browser.open(self.dossier)

        self.assertEquals([
            'Document', 'document_with_template', 'Task',
            'Add task from template', 'Subdossier', 'Participant'
        ], factoriesmenu.addable_types())

        self.activate_feature("oneoffixx")
        browser.open(self.dossier)
        self.assertEquals([
            'Document', 'document_with_template',
            'document_with_oneoffixx_template', 'Task',
            'Add task from template', 'Subdossier', 'Participant'
        ], factoriesmenu.addable_types())
示例#21
0
    def test_addable_types(self, browser):
        dossiertemplate = create(Builder('dossiertemplate')
                                 .within(self.templatedossier))

        browser.login().open(dossiertemplate)

        self.assertEquals(
            ['Document', 'Subdossier'],
            factoriesmenu.addable_types())
示例#22
0
    def test_tasks_and_propsoals_are_not_addable(self, browser):
        self.login(self.regular_user, browser=browser)
        browser.open(self.private_dossier)

        self.assertEquals(
            ['Document',
             'document_with_template',
             'Subdossier'],
            factoriesmenu.addable_types())
示例#23
0
    def test_tasks_and_propsoals_are_not_addable(self, browser):
        self.login(self.regular_user, browser=browser)
        browser.open(self.private_dossier)

        self.assertEquals(
            ['Document',
             'document_with_template',
             'Subdossier'],
            factoriesmenu.addable_types())
    def test_addable_types_with_meeting_word_implementation(self, browser):
        activate_meeting_word_implementation()
        templatefolder = create(Builder('templatefolder'))
        browser.login().open(templatefolder)

        self.assertEquals([
            'Document', 'Proposal Template', 'Sablon Template',
            'TaskTemplateFolder', 'Template Folder'
        ], factoriesmenu.addable_types())
示例#25
0
    def test_dossier_template_is_addable_if_dossier_template_feature_is_enabled(
            self, browser):
        self.login(self.manager, browser)
        browser.open(self.templates)

        expected_addable_types = [
            'Document', 'Dossier template', 'TaskTemplateFolder',
            'Template Folder'
        ]
        self.assertEqual(expected_addable_types, factoriesmenu.addable_types())
    def test_max_dossier_depth_is_respected_when_flag_is_activated(self, browser):
        self.login(self.administrator, browser=browser)

        api.portal.set_registry_record(
            'respect_max_depth', True, interface=IDossierTemplateSettings)

        browser.open(self.dossiertemplate)
        self.assertEqual(
            ['Document', 'Subdossier'], factoriesmenu.addable_types())

        browser.open(self.subdossiertemplate)
        self.assertEqual(['Document'], factoriesmenu.addable_types())

        # raise dossier depth
        api.portal.set_registry_record(
            'maximum_dossier_depth', 2, interface=IDossierContainerTypes)

        browser.open(self.subdossiertemplate)
        self.assertEqual(
            ['Document', 'Subdossier'], factoriesmenu.addable_types())
示例#27
0
    def test_addable_types_on_a_repository_folder_containing_other_repo_folders(self, browser):
        self.grant('Manager')

        root = create(Builder('repository_root'))
        branch_node = create(Builder('repository').within(root))
        leaf_node = create(Builder('repository').within(branch_node))

        browser.login().open(branch_node)

        self.assertEquals(
            ['RepositoryFolder'],
            factoriesmenu.addable_types())
示例#28
0
    def test_addable_types_with_meeting_feature(self, browser):
        self.login(self.manager, browser)
        browser.open(self.templates)

        expected_addable_types = [
            'Document',
            'Sablon Template',
            'TaskTemplateFolder',
            'Template Folder',
            ]

        self.assertEquals(expected_addable_types, factoriesmenu.addable_types())
    def test_adding_new_proposal_template(self, browser):
        self.login(self.administrator, browser)

        browser.open(self.templates)
        self.assertIn('Proposal Template', factoriesmenu.addable_types(browser))

        browser.open(self.templates, view='++add++opengever.meeting.proposaltemplate')
        browser.fill({'Title': 'Baugesuch', 'File': ('Binary Data', 'Baugesuch.docx', MIME_DOCX)}).save()
        statusmessages.assert_no_error_messages()
        baugesuch = self.templates.objectValues()[-1]
        browser.open(baugesuch, view='tabbedview_view-overview')
        self.assertDictContainsSubset({'Title': 'Baugesuch'}, dict(browser.css('.documentMetadata table').first.lists()))
        self.assertEquals('Baugesuch.docx', browser.css('.documentMetadata span.filename').first.text)
    def test_dossiers_addable_in_empty_repofolder_folder(self, browser):
        """A repository folder should not contain other repository folders AND
        dossiers at the same time.
        Therefore dossiers should be addable in empty repository folders.
        """
        self.login(self.administrator, browser)

        self.assertFalse(any(filter(IRepositoryFolder.providedBy,
                                    self.empty_repofolder.objectValues())),
                         'Expected no repositories within empty_repofolder.')
        browser.open(self.empty_repofolder)
        self.assertEquals(
            ['Business Case Dossier', 'RepositoryFolder'],
            factoriesmenu.addable_types())
    def test_only_repofolder_addable_when_already_contains_repositories(self, browser):
        """A repository folder should not contain other repository folders AND
        dossiers at the same time.
        Therefore dossiers should not be addable in branch repository folders.
        """
        self.login(self.administrator, browser)

        self.assertTrue(any(filter(IRepositoryFolder.providedBy,
                                   self.branch_repofolder.objectValues())),
                        'Expected repositories within branch_repofolder.')
        browser.open(self.branch_repofolder)
        self.assertEquals(
            ['RepositoryFolder'],
            factoriesmenu.addable_types())
    def test_addable_types_with_meeting_feature(self, browser):
        self.login(self.manager, browser)
        browser.open(self.templates)

        expected_addable_types = [
            'Document',
            'Proposal Template',
            'Sablon Template',
            'TaskTemplateFolder',
            'Template Folder',
            ]

        self.assertItemsEqual(
            expected_addable_types, factoriesmenu.addable_types())
示例#33
0
    def test_only_repofolder_addable_when_already_contains_repositories(
            self, browser):
        """A repository folder should not contain other repository folders AND
        dossiers at the same time.
        Therefore dossiers should not be addable in branch repository folders.
        """
        self.login(self.administrator, browser)

        self.assertTrue(
            any(
                filter(IRepositoryFolder.providedBy,
                       self.branch_repofolder.objectValues())),
            'Expected repositories within branch_repofolder.')
        browser.open(self.branch_repofolder)
        self.assertEquals(['RepositoryFolder'], factoriesmenu.addable_types())
    def test_security_add_workspace_folders(self, browser):
        expected = {self.workspace_owner: True,
                    self.workspace_admin: True,
                    self.workspace_member: True,
                    self.workspace_guest: False}

        got = {}
        for user in expected.keys():
            locals()['__traceback_info__'] = user
            with self.login(user, browser):
                browser.open(self.workspace_folder)
                got[user] = factoriesmenu.visible() \
                            and 'WorkspaceFolder' in factoriesmenu.addable_types()

        self.assertEquals(expected, got)
示例#35
0
    def test_dossiers_addable_in_empty_repofolder_folder(self, browser):
        """A repository folder should not contain other repository folders AND
        dossiers at the same time.
        Therefore dossiers should be addable in empty repository folders.
        """
        self.login(self.administrator, browser)

        self.assertFalse(
            any(
                filter(IRepositoryFolder.providedBy,
                       self.empty_repofolder.objectValues())),
            'Expected no repositories within empty_repofolder.')
        browser.open(self.empty_repofolder)
        self.assertEquals(['Business Case Dossier', 'RepositoryFolder'],
                          factoriesmenu.addable_types())
示例#36
0
    def test_addable_types_on_a_repository_leaf_folder_if_max_rep_depth_reached(self, browser):
        self.grant('Manager')

        api.portal.set_registry_record(
            'maximum_repository_depth', 2,
            interface=IRepositoryFolderRecords)

        root = create(Builder('repository_root'))
        branch_node = create(Builder('repository').within(root))
        leaf_node = create(Builder('repository').within(branch_node))

        browser.login().open(leaf_node)

        self.assertEquals(
            ['Business Case Dossier', 'Disposition', 'Dossier with template'],
            factoriesmenu.addable_types())
    def test_security_add_documents(self, browser):
        expected = {self.workspace_owner: True,
                    self.workspace_admin: True,
                    self.workspace_member: True,
                    self.workspace_guest: False}

        got = {}
        for user in expected.keys():
            locals()['__traceback_info__'] = user
            with self.login(user, browser):
                browser.open(self.workspace)
                got[user] = factoriesmenu.visible() \
                    and 'Document' in factoriesmenu.addable_types()

        self.maxDiff = None
        self.assertEquals(expected, got)
    def test_adding_new_proposal_template(self, browser):
        self.login(self.administrator, browser)

        browser.open(self.templates)
        self.assertIn('Proposal Template',
                      factoriesmenu.addable_types(browser))

        browser.open(self.templates,
                     view='++add++opengever.meeting.proposaltemplate')
        browser.fill({
            'Title': 'Baugesuch',
            'File': ('Binary Data', 'Baugesuch.docx', MIME_DOCX)
        }).save()
        statusmessages.assert_no_error_messages()
        baugesuch = self.templates.objectValues()[-1]
        browser.open(baugesuch, view='tabbedview_view-overview')
        self.assertDictContainsSubset(
            {'Title': 'Baugesuch'},
            dict(browser.css('.documentMetadata table').first.lists()))
        self.assertEquals(
            'baugesuch.docx',
            browser.css('.documentMetadata span.filename').first.text)
示例#39
0
 def test_nesting_private_folders_is_disallowed(self, browser):
     browser.login().open(self.folder)
     self.assertEquals(['Private Dossier'], factoriesmenu.addable_types())
示例#40
0
    def test_forwarding_is_not_addable_over_the_factory_menu(self, browser):
        browser.login().open(self.inbox)

        self.assertEqual(["Document"], addable_types(browser))
    def test_addable_types(self, browser):
        self.login(self.administrator, browser=browser)
        browser.open(self.dossiertemplate)

        self.assertEquals(
            ['Document', 'Subdossier'], factoriesmenu.addable_types())
示例#42
0
    def test_tasks_and_propsoals_are_not_addable(self, browser):
        browser.login().open(self.dossier)

        self.assertEquals(
            ['Document', 'document_with_template', 'Subdossier'],
            factoriesmenu.addable_types())
    def test_dossier_template_is_addable_if_dossier_template_feature_is_enabled(self, browser):
        self.login(self.manager, browser)
        browser.open(self.templates)

        expected_addable_types = ['Document', 'Dossier template', 'TaskTemplateFolder', 'Template Folder']
        self.assertEqual(expected_addable_types, factoriesmenu.addable_types())
    def test_forwarding_is_not_addable_over_the_factory_menu(self, browser):
        browser.login().open(self.inbox)

        self.assertEqual(['Document'], addable_types(browser))
 def test_adding_from_template_not_allowed_on_branch_nodes(self, browser):
     self.login(self.administrator, browser)
     browser.open(self.branch_repofolder)
     self.assertNotIn(self.factory_label, factoriesmenu.addable_types())
示例#46
0
 def test_owner_can_add_private_dossiers(self, browser):
     browser.login().open(self.folder)
     self.assertIn('Private Dossier', factoriesmenu.addable_types())
示例#47
0
    def test_addable_types_raises_when_menu_not_visible(self, browser):
        browser.open()
        with self.assertRaises(ValueError) as cm:
            factoriesmenu.addable_types()

        self.assertEquals('Factories menu is not visible.', str(cm.exception))
示例#48
0
    def test_forwarding_is_not_addable_over_the_factory_menu(self, browser):
        self.login(self.secretariat_user, browser=browser)
        browser.open(self.inbox)

        self.assertEqual(['Document'], addable_types(browser))
示例#49
0
    def test_forwarding_is_not_addable_over_the_factory_menu(self, browser):
        self.login(self.secretariat_user, browser=browser)
        browser.open(self.inbox)

        self.assertEqual(['Document'], addable_types(browser))
示例#50
0
 def test_nesting_private_folders_is_disallowed(self, browser):
     self.login(self.regular_user, browser=browser)
     browser.open(self.private_folder)
     self.assertEquals(['Private Dossier'], factoriesmenu.addable_types())
 def test_owner_can_add_private_dossiers(self, browser):
     browser.login().open(self.folder)
     self.assertIn('Private Dossier', factoriesmenu.addable_types())
示例#52
0
    def test_dossier_template_is_addable_if_dossier_template_feature_is_enabled(self, browser):
        templatedossier = create(Builder('templatedossier'))
        browser.login().open(templatedossier)

        self.assertIn('Dossier template', factoriesmenu.addable_types())
示例#53
0
 def test_addable_types(self, browser):
     browser.login(SITE_OWNER_NAME).open()
     self.assertIn('Folder', factoriesmenu.addable_types())
示例#54
0
    def test_tasks_and_propsoals_are_not_addable(self, browser):
        browser.login().open(self.dossier)

        self.assertEquals(['Document', 'document_with_template', 'Subdossier'],
                          factoriesmenu.addable_types())
示例#55
0
 def test_owner_can_add_private_dossiers(self, browser):
     self.login(self.regular_user, browser=browser)
     browser.open(self.private_folder)
     self.assertIn('Private Dossier', factoriesmenu.addable_types())
示例#56
0
 def test_adding_from_template_not_allowed_on_branch_nodes(self, browser):
     self.login(self.administrator, browser)
     browser.open(self.branch_repofolder)
     self.assertNotIn(self.factory_label, factoriesmenu.addable_types())
示例#57
0
 def test_adding_from_template_not_allowed_when_adding_businesscase_dossier_disallowed(
         self, browser):
     self.login(self.administrator, browser)
     self.leaf_repofolder.allow_add_businesscase_dossier = False
     browser.open(self.leaf_repofolder)
     self.assertNotIn(self.factory_label, factoriesmenu.addable_types())
 def test_adding_from_template_not_allowed_when_adding_businesscase_dossier_disallowed(self, browser):
     self.login(self.administrator, browser)
     self.leaf_repofolder.allow_add_businesscase_dossier = False
     browser.open(self.leaf_repofolder)
     self.assertNotIn(self.factory_label, factoriesmenu.addable_types())