示例#1
0
 def setUp(self):
     portal = self.layer['portal']
     setRoles(portal, TEST_USER_ID, ['Manager'])
     createObject(portal, 'Folder', 'empty-folder', delete_first=True, title=u"Folder 1")
     transaction.commit()
     
     self.portal = portal
     self.browser = Browser(self.layer['app'])
 def setUp(self):
     portal = self.layer['portal']
     acl_users = portal.acl_users
     acl_users.userFolderAddUser('other_user', 'secret', ['Manager'], [])
     login(portal, 'other_user')
     createObject(portal, 'Folder', 'empty-folder', delete_first=True, title=u"Folder 1")
     transaction.commit()
     self.portal = portal
示例#3
0
 def test_can_not_reorder_if_ordering_is_disabled(self):
     folder = createObject(self.portal, 'Folder', 'test-folder-3')
     folder.setOrdering('unordered')
     
     createObject(folder, 'Document', 'test-1')
     createObject(folder, 'Document', 'test-2')
     
     moveitem = MoveItem(folder, self.layer['request'])
     res = moveitem('test-1', 1, subset_ids=['test-1', 'test-2'])
     self.assertTrue('Ordering disable on folder.' in res)
示例#4
0
    def test_can_not_reorder_if_ordering_is_disabled(self):
        folder = createObject(self.portal, 'Folder', 'test-folder-3')
        folder.setOrdering('unordered')

        createObject(folder, 'Document', 'test-1')
        createObject(folder, 'Document', 'test-2')

        moveitem = MoveItem(folder, self.layer['request'])
        res = moveitem('test-1', 1, subset_ids=['test-1', 'test-2'])
        self.assertTrue('Ordering disable on folder.' in res)
示例#5
0
    def setUp(self):
        portal = self.layer['portal']
        setRoles(portal, TEST_USER_ID, ['Manager'])
        createObject(portal,
                     'Folder',
                     'empty-folder',
                     delete_first=True,
                     title=u"Folder 1")
        transaction.commit()

        self.portal = portal
        self.browser = Browser(self.layer['app'])
 def setUp(self):
     portal = self.layer['portal']
     acl_users = portal.acl_users
     acl_users.userFolderAddUser('other_user', 'secret', ['Manager'], [])
     login(portal, 'other_user')
     createObject(portal,
                  'Folder',
                  'empty-folder',
                  delete_first=True,
                  title=u"Folder 1")
     transaction.commit()
     self.portal = portal
 def test_can_enter_expiry_date(self):
     browser = Browser(self.layer['app'])
     portal = self.layer['portal']
     setRoles(portal, TEST_USER_ID, ('Member', 'Manager'))
     document = createObject(portal, "Document", "effective_date_transition_doc", delete_first=True, title="Workflow note")
     transaction.commit()
     
     browser_login(portal, browser)
     browser.open(document.absolute_url())
     browser.getLink("Manage page").click()
     browser.getLink("Public draft").click()
     workflow_actions = browser.getControl(name="form.widgets.workflow_action:list")
     workflow_actions.getControl(value="publish").click()
     # We set up a comment this time
     
     next_year = datetime.now() + timedelta(365)
     next_year = next_year - timedelta(seconds=next_year.second,
                                     microseconds=next_year.microsecond)
     browser.getControl(name="form.widgets.expiration_date-day").value = str(next_year.day)
     browser.getControl(name="form.widgets.expiration_date-month").value = [str(next_year.month)]
     browser.getControl(name="form.widgets.expiration_date-year").value = str(next_year.year)
     browser.getControl(name="form.widgets.expiration_date-hour").value = str(next_year.hour)
     browser.getControl(name="form.widgets.expiration_date-min").value = str(next_year.minute)
     browser.getControl("Save").click()
     
     # and it shows up in the workflow history
     self.assertEqual("publish", document.workflow_history['plone_workflow'][-1]['action'])
     self.assertEqual("published", portal.portal_workflow.getInfoFor(document, "review_state"))
     self.assertEqual(DateTime(next_year), document.getRawExpirationDate())
     
     portal.manage_delObjects(['effective_date_transition_doc'])
 def test_can_enter_expiration_date_without_transaction(self):
     browser = Browser(self.layer['app'])
     portal = self.layer['portal']
     setRoles(portal, TEST_USER_ID, ('Member', 'Manager'))
     document = createObject(portal, "Document", "expiration_date_without_transition_doc", delete_first=True, title="Workflow note")
     transaction.commit()
     
     browser_login(portal, browser)
     browser.open(document.absolute_url())
     browser.getLink("Manage page").click()
     browser.getLink("Public draft").click()
     
     # Don't select any workflow action, but set date
     next_year = datetime.now() + timedelta(365)
     next_year = next_year - timedelta(seconds=next_year.second,
                                     microseconds=next_year.microsecond)
     browser.getControl(name="form.widgets.expiration_date-day").value = str(next_year.day)
     browser.getControl(name="form.widgets.expiration_date-month").value = [str(next_year.month)]
     browser.getControl(name="form.widgets.expiration_date-year").value = str(next_year.year)
     browser.getControl(name="form.widgets.expiration_date-hour").value = str(next_year.hour)
     browser.getControl(name="form.widgets.expiration_date-min").value = str(next_year.minute)
     browser.getControl("Save").click()
     
     # Still draft, but expiration date set
     self.assertEqual("visible", portal.portal_workflow.getInfoFor(document, "review_state"))
     self.assertEqual(DateTime(next_year), document.getRawExpirationDate())
    def test_can_enter_changenote(self):
        browser = Browser(self.layer['app'])
        portal = self.layer['portal']
        setRoles(portal, TEST_USER_ID, ('Member', 'Manager'))
        document = createObject(portal,
                                "Document",
                                "changenote_transition_doc",
                                delete_first=True,
                                title="Workflow note")
        transaction.commit()

        browser_login(portal, browser)
        browser.open(document.absolute_url())
        browser.getLink("Manage page").click()
        browser.getLink("Public draft").click()
        workflow_actions = browser.getControl(
            name="form.widgets.workflow_action:list")
        workflow_actions.getControl(value="publish").click()
        # We set up a comment this time
        browser.getControl(name="form.widgets.comment").value = "wibble fkjwel"
        browser.getControl("Save").click()

        # and it shows up in the workflow history
        self.assertEqual(
            "publish",
            document.workflow_history['plone_workflow'][-1]['action'])
        self.assertEqual(
            "wibble fkjwel",
            document.workflow_history['plone_workflow'][-1]['comments'])
示例#10
0
 def test_available_workflow_transition_shown_in_workflow_panel(self):
     browser = Browser(self.layer['app'])
     portal = self.layer['portal']
     setRoles(portal, TEST_USER_ID, ('Member', 'Manager'))
     document = createObject(portal, "Document", "transition_shown_in_workflow_panel_doc", delete_first=True, title="Workflow transitions")
     # Commit so the change in roles is visible to the browser
     transaction.commit()
     
     browser_login(portal, browser)
     browser.open(document.absolute_url())
     browser.getLink("Manage page").click()
     browser.getLink("Public draft").click()
     
     # The submit button should be available
     transitions = portal.portal_workflow.getTransitionsFor(document)
     transition_ids = [transition['id'] for transition in transitions]
     # Ensure the workflow transition we are going to look for in the
     # workflow panel is actually available to save debugging headaches
     # later
     self.assertEqual(sorted(['submit', 'hide', 'publish']), sorted(transition_ids))
     
     # Make sure we have both labels and values for all possible workflow actions
     workflow_actions = browser.getControl(name="form.widgets.workflow_action:list")
     self.assertEqual(len(workflow_actions.mech_control.items),3)
     self.assertEqual(workflow_actions.getControl(label='Submit for publication').optionValue, 'submit')
     self.assertEqual(workflow_actions.getControl(label='Make private').optionValue, 'hide')
     self.assertEqual(workflow_actions.getControl(label='Publish').optionValue, 'publish')
示例#11
0
 def setUp(self):
     portal = self.layer['portal']
     setRoles(portal, TEST_USER_ID, ['Manager'])
     createObject(portal, 'Folder', 'key-party', delete_first=True, title=u"Folder 1")
     party = portal.get('key-party')
     createObject(party, 'Document', 'he', delete_first=True, title=u"John Key")
     createObject(party, 'Document', 'she', delete_first=True, title=u"Joan Key")
     transaction.commit()
     self.portal = portal
    def test_can_enter_expiry_date(self):
        browser = Browser(self.layer['app'])
        portal = self.layer['portal']
        setRoles(portal, TEST_USER_ID, ('Member', 'Manager'))
        document = createObject(portal,
                                "Document",
                                "effective_date_transition_doc",
                                delete_first=True,
                                title="Workflow note")
        transaction.commit()

        browser_login(portal, browser)
        browser.open(document.absolute_url())
        browser.getLink("Manage page").click()
        browser.getLink("Public draft").click()
        workflow_actions = browser.getControl(
            name="form.widgets.workflow_action:list")
        workflow_actions.getControl(value="publish").click()
        # We set up a comment this time

        next_year = datetime.now() + timedelta(365)
        next_year = next_year - timedelta(seconds=next_year.second,
                                          microseconds=next_year.microsecond)
        browser.getControl(
            name="form.widgets.expiration_date-day").value = str(next_year.day)
        browser.getControl(name="form.widgets.expiration_date-month").value = [
            str(next_year.month)
        ]
        browser.getControl(
            name="form.widgets.expiration_date-year").value = str(
                next_year.year)
        browser.getControl(
            name="form.widgets.expiration_date-hour").value = str(
                next_year.hour)
        browser.getControl(
            name="form.widgets.expiration_date-min").value = str(
                next_year.minute)
        browser.getControl("Save").click()

        # and it shows up in the workflow history
        self.assertEqual(
            "publish",
            document.workflow_history['plone_workflow'][-1]['action'])
        self.assertEqual(
            "published",
            portal.portal_workflow.getInfoFor(document, "review_state"))
        self.assertEqual(DateTime(next_year), document.getRawExpirationDate())

        portal.manage_delObjects(['effective_date_transition_doc'])
示例#13
0
 def test_panel_linked_to_in_menu(self):
     browser = Browser(self.layer['app'])
     portal = self.layer['portal']
     setRoles(portal, TEST_USER_ID, ('Member', 'Manager'))
     document = createObject(portal, "Document", "panel_linked_to_in_menu_doc", delete_first=True, title="Workflow transitions")
     # Commit so the change in roles is visible to the browser
     transaction.commit()
     
     browser_login(portal, browser)
     browser.open(document.absolute_url())
     browser.getLink("Manage page").click()
     
     # raises exception if not present
     browser.getLink("Public draft").click()
     self.assertIn("form.widgets.workflow_action", browser.contents)
示例#14
0
 def test_choosing_transition_transitions_content(self):
     browser = Browser(self.layer['app'])
     portal = self.layer['portal']
     setRoles(portal, TEST_USER_ID, ('Member', 'Manager'))
     document = createObject(portal, "Document", "do_workflow_transition_doc", delete_first=True, title="Workflow transitioning")
     transaction.commit()
     
     browser_login(portal, browser)
     browser.open(document.absolute_url())
     browser.getLink("Manage page").click()
     browser.getLink("Public draft").click()
     workflow_actions = browser.getControl(name="form.widgets.workflow_action:list")
     workflow_actions.getControl(value="publish").click()
     browser.getControl("Save").click()
     
     self.assertEqual("published", portal.portal_workflow.getInfoFor(document, "review_state"))
    def test_panel_linked_to_in_menu(self):
        browser = Browser(self.layer['app'])
        portal = self.layer['portal']
        setRoles(portal, TEST_USER_ID, ('Member', 'Manager'))
        document = createObject(portal,
                                "Document",
                                "panel_linked_to_in_menu_doc",
                                delete_first=True,
                                title="Workflow transitions")
        # Commit so the change in roles is visible to the browser
        transaction.commit()

        browser_login(portal, browser)
        browser.open(document.absolute_url())
        browser.getLink("Manage page").click()

        # raises exception if not present
        browser.getLink("Public draft").click()
        self.assertIn("form.widgets.workflow_action", browser.contents)
示例#16
0
 def test_can_enter_changenote(self):
     browser = Browser(self.layer['app'])
     portal = self.layer['portal']
     setRoles(portal, TEST_USER_ID, ('Member', 'Manager'))
     document = createObject(portal, "Document", "changenote_transition_doc", delete_first=True, title="Workflow note")
     transaction.commit()
     
     browser_login(portal, browser)
     browser.open(document.absolute_url())
     browser.getLink("Manage page").click()
     browser.getLink("Public draft").click()
     workflow_actions = browser.getControl(name="form.widgets.workflow_action:list")
     workflow_actions.getControl(value="publish").click()
     # We set up a comment this time
     browser.getControl(name="form.widgets.comment").value = "wibble fkjwel"
     browser.getControl("Save").click()
     
     # and it shows up in the workflow history
     self.assertEqual("publish", document.workflow_history['plone_workflow'][-1]['action'])
     self.assertEqual("wibble fkjwel", document.workflow_history['plone_workflow'][-1]['comments'])
    def test_can_enter_expiration_date_without_transaction(self):
        browser = Browser(self.layer['app'])
        portal = self.layer['portal']
        setRoles(portal, TEST_USER_ID, ('Member', 'Manager'))
        document = createObject(portal,
                                "Document",
                                "expiration_date_without_transition_doc",
                                delete_first=True,
                                title="Workflow note")
        transaction.commit()

        browser_login(portal, browser)
        browser.open(document.absolute_url())
        browser.getLink("Manage page").click()
        browser.getLink("Public draft").click()

        # Don't select any workflow action, but set date
        next_year = datetime.now() + timedelta(365)
        next_year = next_year - timedelta(seconds=next_year.second,
                                          microseconds=next_year.microsecond)
        browser.getControl(
            name="form.widgets.expiration_date-day").value = str(next_year.day)
        browser.getControl(name="form.widgets.expiration_date-month").value = [
            str(next_year.month)
        ]
        browser.getControl(
            name="form.widgets.expiration_date-year").value = str(
                next_year.year)
        browser.getControl(
            name="form.widgets.expiration_date-hour").value = str(
                next_year.hour)
        browser.getControl(
            name="form.widgets.expiration_date-min").value = str(
                next_year.minute)
        browser.getControl("Save").click()

        # Still draft, but expiration date set
        self.assertEqual(
            "visible",
            portal.portal_workflow.getInfoFor(document, "review_state"))
        self.assertEqual(DateTime(next_year), document.getRawExpirationDate())
    def test_available_workflow_transition_shown_in_workflow_panel(self):
        browser = Browser(self.layer['app'])
        portal = self.layer['portal']
        setRoles(portal, TEST_USER_ID, ('Member', 'Manager'))
        document = createObject(portal,
                                "Document",
                                "transition_shown_in_workflow_panel_doc",
                                delete_first=True,
                                title="Workflow transitions")
        # Commit so the change in roles is visible to the browser
        transaction.commit()

        browser_login(portal, browser)
        browser.open(document.absolute_url())
        browser.getLink("Manage page").click()
        browser.getLink("Public draft").click()

        # The submit button should be available
        transitions = portal.portal_workflow.getTransitionsFor(document)
        transition_ids = [transition['id'] for transition in transitions]
        # Ensure the workflow transition we are going to look for in the
        # workflow panel is actually available to save debugging headaches
        # later
        self.assertEqual(sorted(['submit', 'hide', 'publish']),
                         sorted(transition_ids))

        # Make sure we have both labels and values for all possible workflow actions
        workflow_actions = browser.getControl(
            name="form.widgets.workflow_action:list")
        self.assertEqual(len(workflow_actions.mech_control.items), 3)
        self.assertEqual(
            workflow_actions.getControl(
                label='Submit for publication').optionValue, 'submit')
        self.assertEqual(
            workflow_actions.getControl(label='Make private').optionValue,
            'hide')
        self.assertEqual(
            workflow_actions.getControl(label='Publish').optionValue,
            'publish')
    def test_choosing_transition_transitions_content(self):
        browser = Browser(self.layer['app'])
        portal = self.layer['portal']
        setRoles(portal, TEST_USER_ID, ('Member', 'Manager'))
        document = createObject(portal,
                                "Document",
                                "do_workflow_transition_doc",
                                delete_first=True,
                                title="Workflow transitioning")
        transaction.commit()

        browser_login(portal, browser)
        browser.open(document.absolute_url())
        browser.getLink("Manage page").click()
        browser.getLink("Public draft").click()
        workflow_actions = browser.getControl(
            name="form.widgets.workflow_action:list")
        workflow_actions.getControl(value="publish").click()
        browser.getControl("Save").click()

        self.assertEqual(
            "published",
            portal.portal_workflow.getInfoFor(document, "review_state"))
示例#20
0
 def setUp(self):
     portal = self.layer['portal']
     setRoles(portal, TEST_USER_ID, ['Manager'])
     createObject(portal,
                  'Folder',
                  'key-party',
                  delete_first=True,
                  title=u"Folder 1")
     party = portal.get('key-party')
     createObject(party,
                  'Document',
                  'he',
                  delete_first=True,
                  title=u"John Key")
     createObject(party,
                  'Document',
                  'she',
                  delete_first=True,
                  title=u"Joan Key")
     transaction.commit()
     self.portal = portal
示例#21
0
 def setUp(self):
     portal = self.layer['portal']
     setRoles(portal, TEST_USER_ID, ['Manager'])
     testfolder = createObject(portal, 'Folder', 'test-folder', check_for_first=True, title='Test Folder')
     createObject(portal, 'Folder', 'test-folder-2', check_for_first=True, title='Test Folder 2')
     createObject(testfolder, 'Document', 'test1', check_for_first=True)
     createObject(testfolder, 'Document', 'test2', check_for_first=True)
     createObject(testfolder, 'Document', 'test3', check_for_first=True)
     createObject(testfolder, 'Document', 'test4', check_for_first=True)
     createObject(testfolder, 'Document', 'test5', check_for_first=True)
     createObject(testfolder, 'Document', 'test6', check_for_first=True)
     createObject(testfolder, 'Document', 'test7', check_for_first=True)
     createObject(testfolder, 'Document', 'test8', check_for_first=True)
     createObject(testfolder, 'Document', 'test9', check_for_first=True)
     
     self.portal = portal
     self.testfolder = testfolder
     self.moveitem = MoveItem(testfolder, self.layer['request'])
示例#22
0
 def test_can_not_reorder_on_item_that_is_not_a_folder(self):
     test = createObject(self.portal, 'Document', 'test-1')
     moveitem = MoveItem(test, self.layer['request'])
     res = moveitem('something', 1)
     self.assertTrue("Not an ordered folder." in res)
示例#23
0
    def setUp(self):
        portal = self.layer['portal']
        setRoles(portal, TEST_USER_ID, ['Manager'])
        testfolder = createObject(portal,
                                  'Folder',
                                  'test-folder',
                                  check_for_first=True,
                                  title='Test Folder')
        createObject(portal,
                     'Folder',
                     'test-folder-2',
                     check_for_first=True,
                     title='Test Folder 2')
        createObject(testfolder, 'Document', 'test1', check_for_first=True)
        createObject(testfolder, 'Document', 'test2', check_for_first=True)
        createObject(testfolder, 'Document', 'test3', check_for_first=True)
        createObject(testfolder, 'Document', 'test4', check_for_first=True)
        createObject(testfolder, 'Document', 'test5', check_for_first=True)
        createObject(testfolder, 'Document', 'test6', check_for_first=True)
        createObject(testfolder, 'Document', 'test7', check_for_first=True)
        createObject(testfolder, 'Document', 'test8', check_for_first=True)
        createObject(testfolder, 'Document', 'test9', check_for_first=True)

        self.portal = portal
        self.testfolder = testfolder
        self.moveitem = MoveItem(testfolder, self.layer['request'])
示例#24
0
 def test_can_not_reorder_on_item_that_is_not_a_folder(self):
     test = createObject(self.portal, 'Document', 'test-1')
     moveitem = MoveItem(test, self.layer['request'])
     res = moveitem('something', 1)
     self.assertTrue("Not an ordered folder." in res)