Skip to content

Commit

Permalink
Merge f14eaf1 into 0cff52f
Browse files Browse the repository at this point in the history
  • Loading branch information
idgserpro committed Dec 2, 2020
2 parents 0cff52f + f14eaf1 commit 1e23eaa
Show file tree
Hide file tree
Showing 6 changed files with 70 additions and 19 deletions.
4 changes: 4 additions & 0 deletions CHANGES.rst
Expand Up @@ -12,6 +12,9 @@ There's a frood who really knows where his towel is.
This version removes tile registration/removal;
you must depend on plone.app.tiles >= 3.0.0 to avoid issues with ``collective.nitf`` tile.

- Fix rendering plone.belowcontenttitle.contents when adding a Link or a File inside a nitf content and plone.app.contenttypes is installed (fix `#228`_)
[idgserpro]

- Fix AttributeError: query when running upgradeStep 1008 (fix `#226`_)
[idgserpro]

Expand Down Expand Up @@ -260,4 +263,5 @@ There's a frood who really knows where his towel is.
.. _`#205`: https://github.com/collective/collective.nitf/issues/205
.. _`#208`: https://github.com/collective/collective.nitf/issues/208
.. _`#226`: https://github.com/collective/collective.nitf/issues/226
.. _`#228`: https://github.com/collective/collective.nitf/issues/228
.. _`#233`: https://github.com/collective/collective.nitf/issues/233
11 changes: 11 additions & 0 deletions src/collective/nitf/browser/__init__.py
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from plone import api
from plone.app.layout.viewlets.content import ContentRelatedItems
from plone.app.layout.viewlets.content import DocumentBylineViewlet
from plone.dexterity.browser.view import DefaultView
from plone.memoize import ram
Expand Down Expand Up @@ -90,3 +91,13 @@ def author(self):

def authorname(self):
return self.context.byline


class NITFBelowContentTitleContents(ContentRelatedItems):
def related_items(self):
catalog = api.portal.get_tool('portal_catalog')
path = '/'.join(self.context.getPhysicalPath())
brains = catalog(
Type=['Link', 'File'], path=path, sort_on='getObjPositionInParent',
)
return brains
2 changes: 1 addition & 1 deletion src/collective/nitf/browser/configure.zcml
Expand Up @@ -64,8 +64,8 @@
for="collective.nitf.content.INITF"
name="plone.belowcontenttitle.contents"
manager="plone.app.layout.viewlets.interfaces.IBelowContentBody"
class=".NITFBelowContentTitleContents"
view="plone.app.layout.globals.interfaces.IViewView"
template="templates/nitf_contents.pt"
permission="zope2.View"
/>

Expand Down
11 changes: 0 additions & 11 deletions src/collective/nitf/browser/templates/nitf_contents.pt

This file was deleted.

40 changes: 35 additions & 5 deletions src/collective/nitf/tests/test_viewlets.py
Expand Up @@ -5,9 +5,12 @@
For more information on how to test viewlets, see:
http://docs.plone.org/develop/plone/views/viewlets.html
"""
from collective.nitf.browser import NITFBelowContentTitleContents
from collective.nitf.interfaces import INITFLayer
from collective.nitf.testing import FRACTAL
from collective.nitf.testing import INTEGRATION_TESTING
from collective.nitf.testing import IS_PLONE_5
from collective.nitf.tests.api_hacks import set_file_field
from plone import api
from Products.Five.browser import BrowserView as View
from zope.component import getMultiAdapter
Expand Down Expand Up @@ -36,15 +39,17 @@ def setUp(self):

with api.env.adopt_roles(['Manager']):
self.n1 = api.content.create(
self.portal, 'collective.nitf.content', 'n1')
self.portal, 'collective.nitf.content', 'n1',
)

def _get_viewlet_manager(self, context, request=None, name=None):
self.assertIsNotNone(name)
if request is None:
request = self.request
view = View(context, request)
manager = getMultiAdapter(
(context, request, view), IViewletManager, name)
(context, request, view), IViewletManager, name,
)
return manager

def _get_viewlet(self, context, manager, name):
Expand All @@ -68,14 +73,16 @@ def test_render_empty_byline(self):
documentbyline = self._get_viewlet(self.n1, self.manager, self.viewlet)

self.assertNotIn(
u'<span class="documentAuthor">', documentbyline.render())
u'<span class="documentAuthor">', documentbyline.render(),
)

def test_render_non_existent_user(self):
documentbyline = self._get_viewlet(self.n1, self.manager, self.viewlet)

self.n1.byline = u'Keith Moon'
self.assertIn(
u'<span class="documentAuthor">', documentbyline.render())
u'<span class="documentAuthor">', documentbyline.render(),
)
self.assertNotIn(u'property="rnews:author"', documentbyline.render())
self.assertIn(u'Keith Moon', documentbyline.render())

Expand All @@ -90,8 +97,31 @@ def test_render_existent_user(self):

self.n1.byline = u'Keith Moon'
self.assertIn(
u'<span class="documentAuthor">', documentbyline.render())
u'<span class="documentAuthor">', documentbyline.render(),
)
self.assertIn(
u'<a href="http://nohost/plone/author/keith-moon" property="rnews:author">Keith Moon</a>',
documentbyline.render(),
)

def test_render_viewlet_plone_below_contenttitle_file(self):
file = api.content.create(
self.n1, 'File', title='foo_related', description='bar_related',
)
set_file_field(file, FRACTAL, 'image/jpeg')
viewlet = NITFBelowContentTitleContents(
self.portal, self.request, None, None,
)
viewlet.update()
rendered = viewlet.render()
self.assertIn('foo_related', rendered)
self.assertIn('bar_related', rendered)

def test_empty_render_viewlet_plone_below_contenttitle(self):
viewlet = NITFBelowContentTitleContents(
self.portal, self.request, None, None,
)
viewlet.update()
rendered = viewlet.render()
empty_rendering = u'\n'
self.assertEqual(empty_rendering, rendered)
21 changes: 19 additions & 2 deletions src/collective/nitf/tests/test_views.py
Expand Up @@ -30,7 +30,8 @@ def setUp(self):

with api.env.adopt_roles(['Manager']):
self.n1 = api.content.create(
self.portal, 'collective.nitf.content', 'n1')
self.portal, 'collective.nitf.content', 'n1',
)


class DefaultViewTestCase(TestViewMixin, BaseViewTestCase):
Expand Down Expand Up @@ -99,6 +100,21 @@ def test_get_media(self):
self.assertEqual(media[1].getObject().id, 'bar')
self.assertEqual(media[2].getObject().id, 'baz')

def test_render_plone_below_contenttitle(self):
image = api.content.create(self.n1, 'Image', title='img_foo')
set_image_field(image, FRACTAL, 'image/jpeg')
file = api.content.create(
self.n1, 'File', title='file_foo', description='file_bar',
)
set_file_field(file, FRACTAL, 'image/jpeg')
file2 = api.content.create(
self.n1, 'File', title='file_foo2', description='file_bar2',
)
set_file_field(file2, FRACTAL, 'image/jpeg')
with api.env.adopt_roles(['Manager']):
viewlets = self.n1.restrictedTraverse('@@manage-viewlets')()
self.assertIn('Viewlet: plone.belowcontenttitle.contents', viewlets)


class SlideshowViewTestCase(TestViewMixin, BaseViewTestCase):

Expand Down Expand Up @@ -187,7 +203,8 @@ def setUp(self):

with api.env.adopt_roles(['Manager']):
self.n1 = api.content.create(
self.portal, 'collective.nitf.content', 'n1')
self.portal, 'collective.nitf.content', 'n1',
)

def test_images_traversal(self):
from collective.nitf.testing import DEXTERITY_ONLY
Expand Down

0 comments on commit 1e23eaa

Please sign in to comment.