예제 #1
0
 def test_make_editable_with_unapproved(self):
     """Make an old version editable while having an unapproved
     version.
     """
     content = self.root.test
     manager = IVersionManager(content.get_mockup_version(1))
     self.assertTrue(manager.make_editable())
     self.assertEqual(len(content.objectIds('Mockup Version')), 6)
예제 #2
0
    def test_make_editable_with_approved(self):
        """Make an old version editable while having an approved and
        yet not published version. This will not work.
        """
        content = self.root.test

        self.layer.login('editor')

        publisher = IPublicationWorkflow(content)
        publisher.approve(DateTime() + 50)

        self.layer.login('author')

        manager = IVersionManager(content.get_mockup_version(1))
        with self.assertRaises(VersioningError):
            manager.make_editable()
        self.assertEqual(len(content.objectIds('Mockup Version')), 5)
예제 #3
0
class PublicationStatusInfo(grok.Adapter):
    grok.context(IVersion)
    grok.provides(IPublicationStatusInfo)

    def __init__(self, context):
        self.context = context
        self.manager = IVersionManager(self.context)

    @property
    def id(self):
        return self.context.getId()

    @property
    def modification_time(self):
        dt = self.manager.get_modification_datetime()
        if dt is not None:
            return dt.asdatetime()

    @property
    def publication_time(self):
        dt = self.manager.get_publication_datetime()
        if dt is not None:
            return dt.asdatetime()

    @property
    def expiration_time(self):
        dt = self.manager.get_expiration_datetime()
        if dt is not None:
            return dt.asdatetime()

    @property
    def last_author(self):
        author = self.manager.get_last_author()
        if author is not None:
            return author.fullname()

    @property
    def version_status(self):
        return self.manager.get_status()

    def delete(self):
        return self.manager.delete()

    def copy_for_editing(self):
        return self.manager.make_editable()