def test_delete_published_version(self): """Delete a published version. This is not possible and should trigger an error. """ content = self.root.test self.assertEqual(len(content.objectIds('Mockup Version')), 5) manager = IVersionManager(content.get_viewable()) with self.assertRaises(VersioningError): manager.delete() self.assertEqual(len(content.objectIds('Mockup Version')), 5)
def test_delete_closed_version(self): """Delete a previously closed version. """ content = self.root.test self.assertEqual(len(content.objectIds('Mockup Version')), 5) manager = IVersionManager(content.get_mockup_version(0)) manager.delete() self.assertEqual(len(content.objectIds('Mockup Version')), 4) manager = IVersionManager(content.get_mockup_version(1)) manager.delete() self.assertEqual(len(content.objectIds('Mockup Version')), 3)
def test_delete_unapproved_version(self): """Delete an unapproved version. """ content = self.root.test self.assertEqual(len(content.objectIds('Mockup Version')), 5) manager = IVersionManager(content.get_editable()) self.assertTrue(manager.delete()) self.assertEqual(content.get_editable(), None) self.assertEqual(len(content.objectIds('Mockup Version')), 4)
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()