def __call__(self): """ Create a new revision based on an existing item IRevisionFile """ revisionfile_info = IRevisionFileInfo(self.context) revision_folder = revisionfile_info.revision_folder() revision_info = IRevisionInfo(revision_folder) next_code = revision_info.next_code() try: _copy(revision_folder, self.context, revision_folder, self.context.getId(), next_code) cloned_revision = getattr(revision_folder, next_code) member = getMultiAdapter((self.context, self.request), name=u'plone_portal_state').member() creator = member.getId() cloned_revision.setCreators([creator]) plone_utils = getToolByName(self.context, 'plone_utils') plone_utils.changeOwnershipOf(cloned_revision, member.getId()) cloned_revision.setRelatedItems(self.context.getRelatedItems()) cloned_revision.setEffectiveDate(None) cloned_revision.reindexObject() cloned_revision.reindexObjectSecurity() except ConflictError: raise except Exception: IStatusMessage(self.request).addStatusMessage(_(u'cloned_revision_error', default=u'Error'), type='error') else: IStatusMessage(self.request).addStatusMessage(_(u'cloned_revision_ok', default=u'Revision cloned correctly'), type='info') self.request.response.redirect("/".join(revision_folder.getPhysicalPath()))
def _dictfy(self, item): revisionfile_info = IRevisionFileInfo(item) return dict(url=revisionfile_info.url(), download_url=revisionfile_info.download_url(), title=revisionfile_info.title(), code=revisionfile_info.code(), obj=item, obj_info=revisionfile_info, )
def test_revisionfile_info_adapter(self): """ """ from redomino.revision.interfaces import IRevisionFileInfo revisionfile11_info = self._revisionfile11_info() self.assertTrue(IRevisionFileInfo.providedBy(revisionfile11_info)) from redomino.revision.content.revisionfile import RevisionFileInfo self.assertIsInstance(revisionfile11_info, RevisionFileInfo) self.assertTrue(IRevisionFileInfo.implementedBy(RevisionFileInfo))
def revisionfile_deleted(obj, event): """ Reindex the revision folder item """ if obj is not event.object: return revisionfile_info = IRevisionFileInfo(obj) revision_folder = revisionfile_info.revision_folder() revision_info = IRevisionInfo(revision_folder) for revisionfile in revision_info.revisionfiles(): revisionfile.reindexObject() revision_folder.reindexObject()
class RevisionNotLatestViewlet(ViewletBase): index = ViewPageTemplateFile('templates/notlatest_viewlet.pt') def update(self): super(RevisionNotLatestViewlet, self).update() self.revisionfile_info = IRevisionFileInfo(self.context) self.latest = self.revisionfile_info.is_latest()
class RevisionListViewlet(ViewletBase): index = ViewPageTemplateFile('templates/revisionlist_viewlet.pt') def update(self): super(RevisionListViewlet, self).update() self.revisionfile_info = IRevisionFileInfo(self.context) self.revision_info = IRevisionInfo(self.revisionfile_info.revision_folder()) self.revisions = sorted(self.revision_info.revisionfiles_info(), key = lambda o: o['obj_info'].code(), reverse = True)
def revisionfile_workflow(obj, event): """ Workflow state changed """ priority_utility = queryUtility(IRevisionWorkflowUtility, name=obj.portal_type) priority_utility = not priority_utility and queryUtility(IRevisionWorkflowUtility) priority_map = priority_utility and priority_utility.priority_map() if priority_map: revisionfile_info = IRevisionFileInfo(obj) revision = revisionfile_info.revision_folder() revision_info = IRevisionInfo(revision) latest = revision_info.latest() obj_status = revisionfile_info.status() latestfile_info = IRevisionFileInfo(latest) latest_status = latestfile_info.status() if priority_map.get(obj_status, {}).get('priority', -1) >= priority_map.get(latest_status, {}).get('priority', -1): # set status workflow = event.workflow workflow.setStatusOf(workflow.getId(), revision, {'action': event.action, 'review_state': obj_status, 'comments': '', 'actor': '', 'time': DateTime()}) workflow.updateRoleMappingsFor(revision) revision.reindexObject() revision.reindexObjectSecurity()
def revision_code_file(obj): """ """ revisionfile_info = IRevisionFileInfo(obj) return revisionfile_info.code()
def revisionfile_modified(obj, event): """ Reindex the revision folder item """ revisionfile_info = IRevisionFileInfo(obj) revision_folder = revisionfile_info.revision_folder() revision_folder.reindexObject()
def update(self): super(RevisionListViewlet, self).update() self.revisionfile_info = IRevisionFileInfo(self.context) self.revision_info = IRevisionInfo(self.revisionfile_info.revision_folder()) self.revisions = sorted(self.revision_info.revisionfiles_info(), key = lambda o: o['obj_info'].code(), reverse = True)
def update(self): super(RevisionNotLatestViewlet, self).update() self.revisionfile_info = IRevisionFileInfo(self.context) self.latest = self.revisionfile_info.is_latest()