def get_link_integrity_breaches(self): if isLinked(self.block): breaches = self.link_integrity.getIntegrityBreaches() breaches_info = [] sources = breaches.values() sources = len(sources) and sources[0] or sources for source in sources: breaches_info.append({'title': source.title_or_id(), 'url': source.absolute_url()}) return breaches_info else: return None
def __call__(self): context = self.context request = context.REQUEST # copied from delete_confirmation controller script if isLinked(context): parent = context.aq_inner.aq_parent title = safe_unicode(context.title_or_id()) try: lock_info = context.restrictedTraverse('@@plone_lock_info') except AttributeError: lock_info = None if lock_info is not None and lock_info.is_locked(): message = _pl_(u'${title} is locked and cannot be deleted.', mapping={u'title': title}) else: parent.manage_delObjects(context.getId()) message = _pl_(u'${title} has been deleted.', mapping={u'title': title}) transaction_note('Deleted %s' % context.absolute_url()) context.plone_utils.addPortalMessage(message) return context.REQUEST.RESPONSE.redirect( object.aq_inner.aq_parent.absolute_url()) else: #check for lock info try: lock_info = context.restrictedTraverse('@@plone_lock_info') except AttributeError: lock_info = None if lock_info is not None and lock_info.is_locked(): lock_view = getMultiAdapter((context, request), name="plone_lock_info") self.info = lock_view self.lock_is_stealable = self.info.lock_is_stealable() self.lock_info = self.info.lock_info() return self.locked_template() return self.template()
def test_confirmation_dialog_link_integrity_checker_should_actually_delete_the_object( self): """The confirmation dialog deletes the object within a later rolled-back savepoint in order to detect broken links. If we only trash the object, the link checker will no longer work. Therefore ftw.trash must back off while within the link integrity checker. """ if self.is_dexterity: # the test does not work with dexterity. return self.grant('Site Administrator') target = create(Builder('folder')) # be aware that the page object is always archetypes. create( Builder('page').having( text='<p><a href="resolveuid/{}">folder</a>'.format( IUUID(target)))) self.assertTrue(isLinked(target))
def get_link_integrity_breaches(self): if isLinked(self.block): if IS_PLONE_5: portal = api.portal.get() view = api.content.get_view( 'delete_confirmation_info', portal, self.request) breaches = view.get_breaches([self.block, ]) else: breaches = self.link_integrity.getIntegrityBreaches() breaches_info = [] sources = breaches.values() sources = len(sources) and sources[0] or sources for source in sources: breaches_info.append({'title': source.title_or_id(), 'url': source.absolute_url()}) return breaches_info else: return None
def test_is_linked(self): from Products.CMFPlone.utils import isLinked img1 = self.portal['image1'] doc1 = self.portal['doc1'] self._set_text(doc1, '<img src="image1"></img>') self.assertTrue(isLinked(img1))