Esempio n. 1
0
    def free_reference_prefix(self, prefix_num):
        refs = ReferenceNumberPrefixAdpater(self.context)
        refs.free_number(prefix_num)

        notify(RepositoryPrefixUnlocked(self.context, prefix_num))
        messages = IStatusMessage(self.request)
        messages.add(_("statmsg_prefix_unlocked",
                    default=u"Reference prefix has been unlocked."),
                    type=u"info")
    def setUp(self):
        super(TestReferencePrefixManager, self).setUp()
        self.grant('Manager')

        self.root = create(Builder('repository_root'))
        self.repo = create(
            Builder('repository').titled(u'Weiterbildung').within(self.root))
        self.repo1 = create(
            Builder('repository').titled("One").within(self.repo))
        self.repo2 = create(
            Builder('repository').titled("Two").within(self.repo))

        self.reference_manager = ReferenceNumberPrefixAdpater(self.repo)
        # move repo1 to prefix 3 which leaves prefix 1 unused
        self.reference_manager.set_number(self.repo1, 3)
        transaction.commit()
    def free_reference_prefix(self, prefix_num):
        refs = ReferenceNumberPrefixAdpater(self.context)

        if refs.is_prefix_used(prefix_num):
            api.portal.show_message(
                _(u'statmsg_prefix_unlock_failure',
                  default='The reference you try to unlock is still in use.'),
                request=self.request,
                type="error")
            return

        refs.free_number(prefix_num)
        notify(RepositoryPrefixUnlocked(self.context, prefix_num))
        api.portal.show_message(
            _("statmsg_prefix_unlocked",
              default=u"Reference prefix has been unlocked."),
            request=self.request,
            type="info")
    def setUp(self):
        super(TestReferencePrefixManager, self).setUp()
        self.grant('Manager')

        self.root = create(Builder('repository_root'))
        self.repo = create(Builder('repository')
            .titled(u'Weiterbildung')
            .within(self.root))
        self.repo1 = create(Builder('repository')
                        .titled("One")
                        .within(self.repo))
        self.repo2 = create(Builder('repository')
                        .titled("Two")
                        .within(self.repo))

        self.reference_manager = ReferenceNumberPrefixAdpater(self.repo)
        # move repo1 to prefix 3 which leaves prefix 1 unused
        self.reference_manager.set_number(self.repo1, 3)
        transaction.commit()
 def prefix_mapping(self):
     refs = ReferenceNumberPrefixAdpater(self.context)
     return refs.get_number_mapping()
Esempio n. 6
0
class TestReferencePrefixManager(FunctionalTestCase):

    def setUp(self):
        super(TestReferencePrefixManager, self).setUp()

        self.grant('Administrator')

        self.root = create(Builder('repository_root'))
        self.repo = create(Builder('repository')
                           .titled(u'Weiterbildung')
                           .within(self.root))
        self.repo1 = create(Builder('repository')
                            .titled("One")
                            .within(self.repo))
        self.repo2 = create(Builder('repository')
                            .titled("Two")
                            .within(self.repo))

        self.reference_manager = ReferenceNumberPrefixAdpater(self.repo)
        # move repo1 to prefix 3 which leaves prefix 1 unused
        self.reference_manager.set_number(self.repo1, 3)
        transaction.commit()

    @browsing
    def test_manager_lists_used_and_unused_prefixes(self, browser):
        browser.login().open(self.repo, view='referenceprefix_manager')

        table = browser.css('#reference_prefix_manager_table').first.lists()
        self.assertEquals([['1', 'One', 'Unlock'],
                           ['2', 'Two', 'In use'],
                           ['3', 'One', 'In use']], table)

    @browsing
    def test_manager_deletes_unused_prefix_when_button_is_clicked(self, browser):
        browser.login().open(self.repo, view='referenceprefix_manager')

        # works because we only have one unlock button
        browser.css('.unlock').first.click()

        table = browser.css('#reference_prefix_manager_table').first.lists()

        self.assertEquals([['2', 'Two', 'In use'],
                           ['3', 'One', 'In use']], table)

    def test_manager_throws_error_when_delete_request_for_used_prefix_occurs(self):
        self.assertRaises(Exception, self.reference_manager.free_number, (2))

    @browsing
    def test_manager_handles_deleted_repositories_correclty(self, browser):
        api.content.delete(obj=self.repo2)
        transaction.commit()

        browser.login().open(self.repo, view='referenceprefix_manager')

        table = browser.css('#reference_prefix_manager_table').first.lists()

        self.assertEquals([['1', 'One', 'Unlock'],
                           ['2', '-- Already removed object --', 'Unlock'],
                           ['3', 'One', 'In use']], table)

    @browsing
    def test_stored_mappings_from_deleted_repos_are_marked_as_free(self, browser):
        api.content.delete(obj=self.repo2)
        transaction.commit()

        browser.login().open(self.repo, view='referenceprefix_manager')
        browser.css('.unlock')[1].click()

        table = browser.css('#reference_prefix_manager_table').first.lists()

        self.assertEquals([['1', 'One', 'Unlock'],
                           ['3', 'One', 'In use']], table)

    @browsing
    def test_manager_shows_default_message_when_no_repositorys_available(self, browser):
        browser.login().open(self.repo1, view='referenceprefix_manager')

        self.assertEquals(
            'No nested repositorys available.',
            browser.css('#reference_prefix_manager_table tbody').first.text)

    @browsing
    def test_manager_is_hidden_from_user_without_permission(self, browser):
        self.grant('Contributor')

        with self.assertRaises(Unauthorized):
            browser.login().open(self.repo1, view='referenceprefix_manager')

    @browsing
    def test_unlock_event_gets_logged_in_journal(self, browser):
        browser.login().open(self.repo, view='referenceprefix_manager')
        browser.css('.unlock').first.click()

        # get last journal entry
        journal = get_journal_entry(self.root, entry=-1)

        self.assertEquals(
            'Unlocked prefix 1 in weiterbildung.',
            translate(journal.get('action').get('title')))
Esempio n. 7
0
 def test_manager_throws_error_when_delete_request_for_used_prefix_occurs(self):
     manager = ReferenceNumberPrefixAdpater(self.branch_repofolder)
     with self.assertRaises(Exception):
         manager.free_number(19)
Esempio n. 8
0
 def setUp(self):
     super(TestReferencePrefixManager, self).setUp()
     # move repo1 to prefix 3 which leaves prefix 1 unused
     manager = ReferenceNumberPrefixAdpater(self.branch_repofolder)
     manager.set_number(self.leaf_repofolder, 3)
 def test_manager_throws_error_when_delete_request_for_used_prefix_occurs(self):
     self.login(self.administrator)
     manager = ReferenceNumberPrefixAdpater(self.branch_repofolder)
     with self.assertRaises(Exception):
         manager.free_number(19)
 def setUp(self):
     super(TestReferencePrefixManager, self).setUp()
     with self.login(self.administrator):
         # move repo1 to prefix 3 which leaves prefix 1 unused
         manager = ReferenceNumberPrefixAdpater(self.branch_repofolder)
         manager.set_number(self.leaf_repofolder, 3)
class TestReferencePrefixManager(FunctionalTestCase):
    use_browser = True

    def setUp(self):
        super(TestReferencePrefixManager, self).setUp()
        self.grant('Manager')

        self.root = create(Builder('repository_root'))
        self.repo = create(Builder('repository')
            .titled(u'Weiterbildung')
            .within(self.root))
        self.repo1 = create(Builder('repository')
                        .titled("One")
                        .within(self.repo))
        self.repo2 = create(Builder('repository')
                        .titled("Two")
                        .within(self.repo))

        self.reference_manager = ReferenceNumberPrefixAdpater(self.repo)
        # move repo1 to prefix 3 which leaves prefix 1 unused
        self.reference_manager.set_number(self.repo1, 3)
        transaction.commit()

    def parse_manager_table_data(self):
        table = []
        for tr in self.browser.css("#content .listing tr"):
            row = []
            for i in range(0, 3):
                td = tr.target.getchildren()[i]
                text = td.text_content().strip()
                if text == '': # no text? then maybe a button.
                    text = td.getchildren()[0].value
                row.append(text)
            table.append(row)
        return table

    def test_manager_lists_used_and_unused_prefixes(self):
        self.browser.open('%s/referenceprefix_manager' % (self.repo.absolute_url()))
        table = self.parse_manager_table_data()

        self.assertEquals([
                ['1', 'One', 'Unlock'],
                ['2', 'Two', 'In use'],
                ['3', 'One', 'In use']
            ], table)

    def test_manager_deletes_unused_prefix_when_button_is_clicked(self):
        self.browser.open('%s/referenceprefix_manager' % (self.repo.absolute_url()))

        # works because we only have one unlock button
        self.browser.getLink("Unlock").click()

        table = self.parse_manager_table_data()

        self.assertEquals([
            ['2', 'Two', 'In use'],
            ['3', 'One', 'In use']
        ], table)

    def test_manager_throws_error_when_delete_request_for_used_prefix_occurs(self):
        self.assertRaises(Exception, self.reference_manager.free_number, (2))

    def test_manager_shows_default_message_when_no_repositorys_available(self):
        self.browser.open('%s/referenceprefix_manager' % (self.repo1.absolute_url()))

        prefixmanager = self.browser.css("#content td")

        self.assertEquals(
            "No nested repositorys available.",
            prefixmanager[0].plain_text())

    def test_manager_is_hided_from_user_without_permission(self):
        self.grant('Contributor')

        self.assertRaises(
            Unauthorized,
            self.browser.open,
            ('%s/referenceprefix_manager' % (self.repo1.absolute_url())))

    def test_unlock_event_gets_logged_in_journal(self):
        self.browser.open('%s/referenceprefix_manager' % (self.repo.absolute_url()))

        # works because we only have one unlock button
        self.browser.getLink("Unlock").click()

        # get last journal entry
        journal = get_journal_entry(self.root, entry=-1)

        self.assertEquals(
            translate(journal.get('action').get('title')),
            'Unlocked prefix %d in %s.' % (1, self.repo.title_or_id()))
class TestReferencePrefixManager(FunctionalTestCase):
    use_browser = True

    def setUp(self):
        super(TestReferencePrefixManager, self).setUp()
        self.grant('Manager')

        self.root = create(Builder('repository_root'))
        self.repo = create(
            Builder('repository').titled(u'Weiterbildung').within(self.root))
        self.repo1 = create(
            Builder('repository').titled("One").within(self.repo))
        self.repo2 = create(
            Builder('repository').titled("Two").within(self.repo))

        self.reference_manager = ReferenceNumberPrefixAdpater(self.repo)
        # move repo1 to prefix 3 which leaves prefix 1 unused
        self.reference_manager.set_number(self.repo1, 3)
        transaction.commit()

    def parse_manager_table_data(self):
        table = []
        for tr in self.browser.css("#content .listing tr"):
            row = []
            for i in range(0, 3):
                td = tr.target.getchildren()[i]
                text = td.text_content().strip()
                if text == '':  # no text? then maybe a button.
                    text = td.getchildren()[0].value
                row.append(text)
            table.append(row)
        return table

    def test_manager_lists_used_and_unused_prefixes(self):
        self.browser.open('%s/referenceprefix_manager' %
                          (self.repo.absolute_url()))
        table = self.parse_manager_table_data()

        self.assertEquals([['1', 'One', 'Unlock'], ['2', 'Two', 'In use'],
                           ['3', 'One', 'In use']], table)

    def test_manager_deletes_unused_prefix_when_button_is_clicked(self):
        self.browser.open('%s/referenceprefix_manager' %
                          (self.repo.absolute_url()))

        # works because we only have one unlock button
        self.browser.getLink("Unlock").click()

        table = self.parse_manager_table_data()

        self.assertEquals([['2', 'Two', 'In use'], ['3', 'One', 'In use']],
                          table)

    def test_manager_throws_error_when_delete_request_for_used_prefix_occurs(
            self):
        self.assertRaises(Exception, self.reference_manager.free_number, (2))

    def test_manager_shows_default_message_when_no_repositorys_available(self):
        self.browser.open('%s/referenceprefix_manager' %
                          (self.repo1.absolute_url()))

        prefixmanager = self.browser.css("#content td")

        self.assertEquals("No nested repositorys available.",
                          prefixmanager[0].plain_text())

    def test_manager_is_hided_from_user_without_permission(self):
        self.grant('Contributor')

        self.assertRaises(Unauthorized, self.browser.open,
                          ('%s/referenceprefix_manager' %
                           (self.repo1.absolute_url())))

    def test_unlock_event_gets_logged_in_journal(self):
        self.browser.open('%s/referenceprefix_manager' %
                          (self.repo.absolute_url()))

        # works because we only have one unlock button
        self.browser.getLink("Unlock").click()

        # get last journal entry
        journal = get_journal_entry(self.root, entry=-1)

        self.assertEquals(
            translate(journal.get('action').get('title')),
            'Unlocked prefix %d in %s.' % (1, self.repo.title_or_id()))