Help me with custom view for dexterity object?

Hi all, I'm new to Plone, Python, and everything involved in my setup except Apache... but I figured I could handle this. I think I'm most of the way there and it's just a matter of dependencies, but I could be wrong.

My Plone site has been up and running for a couple weeks, and I've broken and fixed it a number of times, including today. My goal is to fuse the tutorial, and the code for the stock News Item viewer, to get a blogroll view usable as a folder display. My custom Dexterity object has an extra tab containing a rich text field; this field contains a given item's "list view" for blogroll purposes, a shaped headline/lede/image combo I plan to wrap additional stuff around in the view I'm developing.

I used bob to create a Dexterity project, src/nhus.blog.post.

I made what I believed were appropriate modifications to the tutorial, merging the code from the tutorial and News Item view.

The tutorial said I was done, so I included the egg under both eggs and develop.

I ran buildout, and restarted the Zope cluster and Apache.

The site was down.

So, I pored over the tutorial again and noticed I hadn't installed z3c.jbot. I did so, and then installed its unmet dependencies, notably zope.untrustedpython and zserver.base... which dragged in a lot of other zope.* packages. Perhaps also notably, it was a mix of 2.x and 4.x versions (maybe a 3.x in as well).

I reran buildout and it puked a stack trace at me, complaining about something something missing security module _base something.

My site was down and google wasn't availing any clues. I started uninstalling packages. I expected, once I uninstalled all the zope.* packages, my site would be well and truly f---ed, but it's back up and running now.

What did I do wrong?

hi! welcome to Plone! :slight_smile:

let me ask you a question before we begin… what do you want, learn how to develop for Plone or just use it to solve some use case?

I'm asking this because creating yet another blog add-on is, IMO, the wrong way to go if the answer is more likely the second one.

1 Like

Thanks for the welcome :slight_smile: I was a forum support volunteer for Joomla and did deployment/support/oddjobs on that platform as an exit transition from PHP. I want to learn Plone. I tried the collective.blog egg, but it left much to be desired and the lead image doodad duplicates data (basic file input instead of using the image library widget TinyMCE uses). Ultimately I'm just a DIY guy.

At the same time, I do also want to get my website up again after its long hiatus, and this is virtually the last thing to do...

And, I've already moved all my blog posts into my custom Dexterity object, and don't want to duplicate that effort :slight_smile:

So, the best option, given the information I know of, is for me to continue trying to make a custom view. The only way I know of to do that is to create an addon. I sense I may've picked a bad time to be a noob, given 5's documentation :slight_smile:

Hi @NathanHawks,
It would help to have a little sketch/diagram that captures the experience you're going for. I have a vague idea of what you're going for but a visual example would really help.

1 Like

What I want:

I have a custom Dexterity type (Blog Post) which is basically a Page with one extra field on its own tab, as seen here:

I want to create a view which shows up in the Display menu when I'm looking at a folder, called Blogroll, as shown here:

When that Display is chosen for a folder, it shows all Blog Post items in that folder, representing them via the custom field (which I assume is addressable in the template as context.getNativeBlogrollItem()). Think of the "All Content" display type, except it uses .native_blogroll_item instead of .text.

What I did:

Here is where I am with the addon: I created the project folder with mrbob and added three files.

Here is the zcml:

...the python:

...and the .pt file:

Then (as mentioned in OP) I added those to eggs and dev sections, satisfied deps (but perhaps not correctly), and let 'er rip.

Based on these two pages...

Indeed, welcome @NathanHawks :slight_smile:

For your code samples, it would be easier for readers if you pasted the text in here and used the </> preformatted text toolbar icon to wrap the code.

This may not be what you're looking for... but for a blog what I do is clone the News Item content type and call it a Blog Post. The default collection views and folder views will show the News Item / Blog Post lead image. You can also select "All Content" view for the folder to show all blog posts in their entirety. Maybe that approach will get you a bit closer.

What is your buildout.cfg and what are the errors when you run bin/instance fg ? You shouldn't have to install any zope.* packages explicitly.

2 Likes

@tkimnguyen, thanks for the welcome.

Code samples as screenshots: yeah, I got carried away.

Cloning news item... that was my first step, but stopping there was not suitable for a few reasons. Moving on.

buildout.cfg:

[buildout]
extends =
    base.cfg
    versions.cfg
#    http://dist.plone.org/release/5.0.7/versions.cfg
find-links +=
    http://dist.plone.org/release/5.0.7

effective-user = plone_daemon
buildout-user = plone_buildout
need-sudo = yes

eggs =
    Plone
    Pillow
    Products.PloneHotfix20160830
    Products.PloneHotfix20161129
#    nhus.blog.post

zcml =
#    plone.reload

develop =
#    src/nhus.blog.post

var-dir=${buildout:directory}/var
backups-dir=${buildout:var-dir}

user=khhjgh:asdghjkl

deprecation-warnings = off
verbose-security = off

parts =
    zeoserver
    client1
    backup
    zopepy
    unifiedinstaller
    precompiler
    setpermissions

[zeoserver]
<= zeoserver_base
recipe = plone.recipe.zeoserver
zeo-address = 127.0.0.1:8100

[client1]
<= client_base
recipe = plone.recipe.zope2instance
zeo-address = ${zeoserver:zeo-address}
http-address = 8080

[versions]
setuptools =
zc.buildout =

Pillow = 3.4.2

Products.DocFinderTab = 1.0.5
Products.PloneHotfix20160830 = 1.3
Products.PloneHotfix20161129 = 1.2
bobtemplates.plone = 1.0.5
buildout.sanitycheck = 1.0.2
collective.checkdocs = 0.2
collective.recipe.backup = 3.0.0
mr.bob = 0.1.2
pkginfo = 1.4.1
plone.recipe.unifiedinstaller = 4.3.2
requests-toolbelt = 0.7.0
zest.pocompile = 1.4

# Required by:
# Jinja2==2.8
MarkupSafe = 0.23

# Required by:
# clint==0.5.1
args = 0.1.0

# Required by:
# twine==1.8.1
clint = 0.5.1

# Required by:
# zest.releaser==6.8
colorama = 0.3.7

Errors: Right now it's good; as you can see, my addon is commented out. I'll post again in a few minutes with the results of uncommenting those two lines; I'll show you everything from bulidout to bin/instance fg. I won't go on a dependency hunt (this time, yet) because it doesn't explicitly state that I need missed anything...

brb.

UPDATED

@tkimnguyen, et al.

Am I supposed to be running buildout with some special development flag? I seem to recall doing that once, based on some instruction to drag-in an additional config file... am I supposed to do that every time I expect src/ to be dragged in?

Output of zeocluster$ sudo -u plone_buildout bin/buildout:

Develop: '/opt/plone/zeocluster/src/nhus.blog.post'
Uninstalling precompiler.
Uninstalling zopepy.
Uninstalling client1.
Updating zeoserver.
Installing client1.
/opt/plone/zeocluster/local/lib/python2.7/site-packages/pkg_resources/__init__.py:183: RuntimeWarning: You have iterated over the result of pkg_resources.parse_version. This is a legacy behavior which is inconsistent with the new version class introduced in setuptools 8.0. In most cases, conversion to a tuple is unnecessary. For comparison of versions, sort the Version instances directly. If you have another use case requiring the tuple, please file a bug with the setuptools project describing that need.
  stacklevel=1,
Generated script '/opt/plone/zeocluster/bin/client1'.
Generated interpreter '/opt/plone/zeocluster/parts/client1/bin/interpreter'.
Generated script '/opt/plone/zeocluster/bin/pilprint.pyc'.
Generated script '/opt/plone/zeocluster/bin/pildriver.py'.
Generated script '/opt/plone/zeocluster/bin/enhancer.py'.
Generated script '/opt/plone/zeocluster/bin/explode.pyc'.
Generated script '/opt/plone/zeocluster/bin/painter.py'.
Generated script '/opt/plone/zeocluster/bin/viewer.py'.
Generated script '/opt/plone/zeocluster/bin/pilfont.py'.
Generated script '/opt/plone/zeocluster/bin/pilconvert.py'.
Generated script '/opt/plone/zeocluster/bin/enhancer.pyc'.
Generated script '/opt/plone/zeocluster/bin/pilfont.pyc'.
Generated script '/opt/plone/zeocluster/bin/viewer.pyc'.
Generated script '/opt/plone/zeocluster/bin/explode.py'.
Generated script '/opt/plone/zeocluster/bin/createfontdatachunk.pyc'.
Generated script '/opt/plone/zeocluster/bin/createfontdatachunk.py'.
Generated script '/opt/plone/zeocluster/bin/thresholder.pyc'.
Generated script '/opt/plone/zeocluster/bin/gifmaker.py'.
Generated script '/opt/plone/zeocluster/bin/player.py'.
Generated script '/opt/plone/zeocluster/bin/pilfile.pyc'.
Generated script '/opt/plone/zeocluster/bin/painter.pyc'.
Generated script '/opt/plone/zeocluster/bin/pilfile.py'.
Generated script '/opt/plone/zeocluster/bin/pildriver.pyc'.
Generated script '/opt/plone/zeocluster/bin/gifmaker.pyc'.
Generated script '/opt/plone/zeocluster/bin/pilconvert.pyc'.
Generated script '/opt/plone/zeocluster/bin/thresholder.py'.
Generated script '/opt/plone/zeocluster/bin/pilprint.py'.
Generated script '/opt/plone/zeocluster/bin/player.pyc'.
Updating backup.
Installing zopepy.
Generated interpreter '/opt/plone/zeocluster/bin/zopepy'.
Updating unifiedinstaller.
Installing precompiler.
Compiling Python files.
SyntaxError: ('invalid syntax', ('/opt/plone/zeocluster/lib/python2.7/site-packages/jinja2/asyncfilters.py', 7, 9, 'async def auto_to_seq(value):\n'))
SyntaxError: ('invalid syntax', ('/opt/plone/zeocluster/lib/python2.7/site-packages/jinja2/asyncsupport.py', 22, 9, 'async def concat_async(async_gen):\n'))
Compiling locale files.
Updating setpermissions.
setpermissions: Running # Dummy references to force this to execute after referenced parts
echo /opt/plone/zeocluster/var/backups yes > /dev/null
chmod 600 .installed.cfg
# Make sure anything we've created in var is r/w by our group
find /opt/plone/zeocluster/var -type d -exec chmod 770 {} \; 2> /dev/null
find /opt/plone/zeocluster/var -type f -exec chmod 660 {} \; 2> /dev/null
find /opt/plone/zeocluster/var -type d -exec chmod 770 {} \; 2> /dev/null
find /opt/plone/zeocluster/var -type f -exec chmod 660 {} \; 2> /dev/null
chmod 754 /opt/plone/zeocluster/bin/*
Versions had to be automatically picked.
The following part definition lists the versions picked:
[versions]
plone.recipe.command = 1.1
plone.recipe.precompiler = 0.6
# Required by:
# nhus.blog.post==1.0a1
z3c.jbot = 0.7.2

Those syntax errors popped up along the way somewhere but haven't appeared to prevent successful builds; i.e., they appear during buildouts which result in a working site.

Anyway... restart the cluster with zeocluster$ sudo -u plone_daemon bin/plonectl restart:

zeoserver: .
daemon process restarted, pid=21878
client1: . . . .
daemon process restarted, pid=21883

Seems hopeful... but the site now gives a 503 error. So, as you suggested, zeocluster$ sudo -u plone_daemon bin/client1 fg:

2017-06-14 20:22:57 INFO ZServer HTTP server started at Wed Jun 14 20:22:57 2017
        Hostname: 0.0.0.0
        Port: 8080
2017-06-14 20:22:59 INFO Products.PloneHotfix20160830 Applied resource patch
2017-06-14 20:22:59 INFO Products.PloneHotfix20160830 Applied confirm patch
2017-06-14 20:22:59 INFO Products.PloneHotfix20160830 Applied z3c_form patch
2017-06-14 20:22:59 INFO Products.PloneHotfix20160830 Applied in_portal patch
2017-06-14 20:22:59 INFO Products.PloneHotfix20160830 Applied plonerootlogin patch
2017-06-14 20:22:59 INFO Products.PloneHotfix20160830 Applied redirects patch
2017-06-14 20:22:59 INFO Products.PloneHotfix20160830 Applied redirect_folderfactories patch
2017-06-14 20:22:59 INFO Products.PloneHotfix20160830 Applied redirect_qi patch
2017-06-14 20:22:59 INFO Products.PloneHotfix20160830 Applied redirectto patch
2017-06-14 20:22:59 INFO Products.PloneHotfix20160830 Applied discussion patch
2017-06-14 20:22:59 INFO Products.PloneHotfix20160830 Applied user patch
2017-06-14 20:22:59 INFO Products.PloneHotfix20160830 Applied zmi patch
2017-06-14 20:22:59 INFO Products.PloneHotfix20160830 Hotfix installed
2017-06-14 20:22:59 INFO Products.PloneHotfix20161129 Applied publishing patch
2017-06-14 20:22:59 INFO Products.PloneHotfix20161129 Applied copy patch
2017-06-14 20:22:59 INFO Products.PloneHotfix20161129 You should call /@@apply-hotfix20161129 on all Plone Sites that have comments enabled.
2017-06-14 20:22:59 INFO Products.PloneHotfix20161129 Applied comments patch
2017-06-14 20:22:59 INFO Products.PloneHotfix20161129 Hotfix installed
2017-06-14 20:22:59 INFO ZEO.ClientStorage zeostorage ClientStorage (pid=22020) created RW/normal for storage: '1'
2017-06-14 20:22:59 INFO ZEO.cache created temporary cache file '<fdopen>'
2017-06-14 20:22:59 INFO ZEO.ClientStorage zeostorage Testing connection <ManagedClientConnection ('127.0.0.1', 8100)>
2017-06-14 20:22:59 INFO ZEO.zrpc.Connection(C) (127.0.0.1:8100) received handshake 'Z3101'
2017-06-14 20:23:00 INFO ZEO.ClientStorage zeostorage Server authentication protocol None
2017-06-14 20:23:00 INFO ZEO.ClientStorage zeostorage Connected to storage: ('localhost.localdomain', 8100)
2017-06-14 20:23:00 INFO ZEO.ClientStorage zeostorage No verification necessary -- empty cache
2017-06-14 20:23:04 INFO ZEO.ClientStorage zeostorage Disconnected from storage: "('localhost.localdomain', 8100)"
Traceback (most recent call last):
  File "/opt/plone/zeocluster/parts/client1/bin/interpreter", line 282, in <module>
    exec(compile(__file__f.read(), __file__, "exec"))
  File "/opt/plone/buildout-cache/eggs/Zope2-2.13.26-py2.7.egg/Zope2/Startup/run.py", line 76, in <module>
    run()
  File "/opt/plone/buildout-cache/eggs/Zope2-2.13.26-py2.7.egg/Zope2/Startup/run.py", line 22, in run
    starter.prepare()
  File "/opt/plone/buildout-cache/eggs/Zope2-2.13.26-py2.7.egg/Zope2/Startup/__init__.py", line 92, in prepare
    self.startZope()
  File "/opt/plone/buildout-cache/eggs/Zope2-2.13.26-py2.7.egg/Zope2/Startup/__init__.py", line 268, in startZope
    Zope2.startup()
  File "/opt/plone/buildout-cache/eggs/Zope2-2.13.26-py2.7.egg/Zope2/__init__.py", line 47, in startup
    _startup()
  File "/opt/plone/buildout-cache/eggs/Zope2-2.13.26-py2.7.egg/Zope2/App/startup.py", line 120, in startup
    load_zcml()
  File "/opt/plone/buildout-cache/eggs/Zope2-2.13.26-py2.7.egg/Zope2/App/startup.py", line 52, in load_zcml
    load_site()
  File "/opt/plone/buildout-cache/eggs/Zope2-2.13.26-py2.7.egg/Zope2/App/zcml.py", line 46, in load_site
    _context = xmlconfig.file(site_zcml)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 649, in file
    include(context, name, package)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 548, in include
    processxmlfile(f, context)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 380, in processxmlfile
    parser.parse(src)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 107, in parse
    xmlreader.IncrementalParser.parse(self, source)
  File "/usr/lib/python2.7/xml/sax/xmlreader.py", line 123, in parse
    self.feed(buffer)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 207, in feed
    self._parser.Parse(data, isFinal)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 349, in end_element_ns
    self._cont_handler.endElementNS(pair, None)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 359, in endElementNS
    self.context.end()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 558, in end
    self.stack.pop().finish()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 706, in finish
    actions = self.handler(context, **args)
  File "/opt/plone/buildout-cache/eggs/Zope2-2.13.26-py2.7.egg/OFS/metaconfigure.py", line 46, in loadProducts
    xmlconfig.include(_context, zcml, package=product)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 548, in include
    processxmlfile(f, context)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 380, in processxmlfile
    parser.parse(src)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 107, in parse
    xmlreader.IncrementalParser.parse(self, source)
  File "/usr/lib/python2.7/xml/sax/xmlreader.py", line 123, in parse
    self.feed(buffer)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 207, in feed
    self._parser.Parse(data, isFinal)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 349, in end_element_ns
    self._cont_handler.endElementNS(pair, None)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 359, in endElementNS
    self.context.end()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 558, in end
    self.stack.pop().finish()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 706, in finish
    actions = self.handler(context, **args)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 548, in include
    processxmlfile(f, context)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 380, in processxmlfile
    parser.parse(src)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 107, in parse
    xmlreader.IncrementalParser.parse(self, source)
  File "/usr/lib/python2.7/xml/sax/xmlreader.py", line 123, in parse
    self.feed(buffer)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 207, in feed
    self._parser.Parse(data, isFinal)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 349, in end_element_ns
    self._cont_handler.endElementNS(pair, None)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 359, in endElementNS
    self.context.end()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 558, in end
    self.stack.pop().finish()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 706, in finish
    actions = self.handler(context, **args)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 548, in include
    processxmlfile(f, context)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 380, in processxmlfile
    parser.parse(src)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 107, in parse
    xmlreader.IncrementalParser.parse(self, source)
  File "/usr/lib/python2.7/xml/sax/xmlreader.py", line 123, in parse
    self.feed(buffer)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 207, in feed
    self._parser.Parse(data, isFinal)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 349, in end_element_ns
    self._cont_handler.endElementNS(pair, None)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 359, in endElementNS
    self.context.end()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 558, in end
    self.stack.pop().finish()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 706, in finish
    actions = self.handler(context, **args)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 548, in include
    processxmlfile(f, context)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 380, in processxmlfile
    parser.parse(src)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 107, in parse
    xmlreader.IncrementalParser.parse(self, source)
  File "/usr/lib/python2.7/xml/sax/xmlreader.py", line 123, in parse
    self.feed(buffer)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 207, in feed
    self._parser.Parse(data, isFinal)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 349, in end_element_ns
    self._cont_handler.endElementNS(pair, None)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 359, in endElementNS
    self.context.end()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 558, in end
    self.stack.pop().finish()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 706, in finish
    actions = self.handler(context, **args)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 548, in include
    processxmlfile(f, context)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 380, in processxmlfile
    parser.parse(src)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 107, in parse
    xmlreader.IncrementalParser.parse(self, source)
  File "/usr/lib/python2.7/xml/sax/xmlreader.py", line 123, in parse
    self.feed(buffer)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 207, in feed
    self._parser.Parse(data, isFinal)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 349, in end_element_ns
    self._cont_handler.endElementNS(pair, None)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 359, in endElementNS
    self.context.end()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 558, in end
    self.stack.pop().finish()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 706, in finish
    actions = self.handler(context, **args)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 548, in include
    processxmlfile(f, context)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 380, in processxmlfile
    parser.parse(src)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 107, in parse
    xmlreader.IncrementalParser.parse(self, source)
  File "/usr/lib/python2.7/xml/sax/xmlreader.py", line 123, in parse
    self.feed(buffer)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 207, in feed
    self._parser.Parse(data, isFinal)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 349, in end_element_ns
    self._cont_handler.endElementNS(pair, None)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 359, in endElementNS
    self.context.end()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 558, in end
    self.stack.pop().finish()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 706, in finish
    actions = self.handler(context, **args)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 548, in include
    processxmlfile(f, context)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 380, in processxmlfile
    parser.parse(src)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 107, in parse
    xmlreader.IncrementalParser.parse(self, source)
  File "/usr/lib/python2.7/xml/sax/xmlreader.py", line 123, in parse
    self.feed(buffer)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 207, in feed
    self._parser.Parse(data, isFinal)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 349, in end_element_ns
    self._cont_handler.endElementNS(pair, None)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 359, in endElementNS
    self.context.end()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 558, in end
    self.stack.pop().finish()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 706, in finish
    actions = self.handler(context, **args)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 548, in include
    processxmlfile(f, context)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 380, in processxmlfile
    parser.parse(src)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 107, in parse
    xmlreader.IncrementalParser.parse(self, source)
  File "/usr/lib/python2.7/xml/sax/xmlreader.py", line 123, in parse
    self.feed(buffer)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 207, in feed
    self._parser.Parse(data, isFinal)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 349, in end_element_ns
    self._cont_handler.endElementNS(pair, None)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 359, in endElementNS
    self.context.end()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 558, in end
    self.stack.pop().finish()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 706, in finish
    actions = self.handler(context, **args)
  File "/opt/plone/buildout-cache/eggs/z3c.autoinclude-0.3.6-py2.7.egg/z3c/autoinclude/zcml.py", line 104, in includePluginsDirective
    includeZCMLGroup(_context, info, filename)
  File "/opt/plone/buildout-cache/eggs/z3c.autoinclude-0.3.6-py2.7.egg/z3c/autoinclude/zcml.py", line 30, in includeZCMLGroup
    include(_context, filename, includable_package)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 548, in include
    processxmlfile(f, context)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 380, in processxmlfile
    parser.parse(src)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 107, in parse
    xmlreader.IncrementalParser.parse(self, source)
  File "/usr/lib/python2.7/xml/sax/xmlreader.py", line 123, in parse
    self.feed(buffer)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 207, in feed
    self._parser.Parse(data, isFinal)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 349, in end_element_ns
    self._cont_handler.endElementNS(pair, None)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 359, in endElementNS
    self.context.end()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 558, in end
    self.stack.pop().finish()
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 706, in finish
    actions = self.handler(context, **args)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 548, in include
    processxmlfile(f, context)
  File "/opt/plone/buildout-cache/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 380, in processxmlfile
    parser.parse(src)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 107, in parse
    xmlreader.IncrementalParser.parse(self, source)
  File "/usr/lib/python2.7/xml/sax/xmlreader.py", line 125, in parse
    self.close()
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 217, in close
    self.feed("", isFinal = 1)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 211, in feed
    self._err_handler.fatalError(exc)
  File "/usr/lib/python2.7/xml/sax/handler.py", line 38, in fatalError
    raise exception
zope.configuration.xmlconfig.ZopeXMLConfigurationError: File "/opt/plone/zeocluster/parts/client1/etc/site.zcml", line 16.2-16.23
    ZopeXMLConfigurationError: File "/opt/plone/buildout-cache/eggs/Products.ATContentTypes-2.2.13-py2.7.egg/Products/ATContentTypes/configure.zcml", line 18.2-18.44
    ZopeXMLConfigurationError: File "/opt/plone/buildout-cache/eggs/plone.app.collection-1.1.7-py2.7.egg/plone/app/collection/configure.zcml", line 9.2-9.45
    ZopeXMLConfigurationError: File "/opt/plone/buildout-cache/eggs/plone.app.querystring-1.3.17-py2.7.egg/plone/app/querystring/configure.zcml", line 11.2-11.42
    ZopeXMLConfigurationError: File "/opt/plone/buildout-cache/eggs/plone.app.registry-1.5-py2.7.egg/plone/app/registry/configure.zcml", line 12.4-12.34
    ZopeXMLConfigurationError: File "/opt/plone/buildout-cache/eggs/plone.app.registry-1.5-py2.7.egg/plone/app/registry/browser/configure.zcml", line 6.4-6.43
    ZopeXMLConfigurationError: File "/opt/plone/buildout-cache/eggs/plone.app.z3cform-1.2.3-py2.7.egg/plone/app/z3cform/configure.zcml", line 10.2-10.41
    ZopeXMLConfigurationError: File "/opt/plone/buildout-cache/eggs/plone.app.widgets-2.0.7-py2.7.egg/plone/app/widgets/configure.zcml", line 12.2-12.41
    ZopeXMLConfigurationError: File "/opt/plone/buildout-cache/eggs/Products.CMFPlone-5.0.7-py2.7.egg/Products/CMFPlone/configure.zcml", line 108.4-112.10
    ZopeXMLConfigurationError: File "/opt/plone/zeocluster/src/nhus.blog.post/src/nhus/blog/post/configure.zcml", line 11.2-11.32
    ZopeSAXParseException: File "/opt/plone/zeocluster/src/nhus.blog.post/src/nhus/blog/post/browser/configure.zcml", line 20.2,  unclosed token

This is a lot of information I didn't have before, so that's helpful in and of itself -- thanks for that.

While I start going over it, any other suggestions, anything else that jumps out at you, other pointers or things you see me doing wrong, are appreciated.

UPDATED
PS: Now I see again, at the bottom of the buildout output, what made me start the dependency hunt...

When I did $ sudo -u plone_buildout bin/pip install z3c.jbot the dependency hunt led to a broken state (I suspect dragging in legacy stuff), but maybe it's because I didn't specify version?

You have a problem (unclosed token) in this file :slight_smile:

When you're developing, you should always run fg so you can see the errors. e.g. https://docs.plone.org/manage/troubleshooting/basic.html

There are lot of warnings when buildout is compiling .py files; that's normal.

Curious that you're using ATContentTypes... why not use Dexterity? (or perhaps I'm misreading your fg output)

1 Like

Firstly... I'm impressed. I'd say you're almost there.
One thing though, don't use screenshots to share your code, use code snippets instead.

I see you hve the view registered already in your zcml.
The name "blogroll_mk_1" isn't the prettiest of names but let's overlook that for now.

What I am about to say may seem a bit counter-intuitive but it will get you what you desire.
You are really trying to make folders support an additional display view. I've noted how to achieve this below using Generic Setup. The result will be an overriding of the normal folder behaviour to register a new view.

IMPORTANT: After doing this you'll need to reinstall your product via the add-ons interface.

the affected files will be (you'll need to create these in your product):

profile/default/types.xml
profile/default/types/Folder.xml

Register your view in the Folder.xml

You'll be adding:
<element value="blogroll_mk_1"/>

To make sure your new version of Folder.xml gets "noticed" you'll need to "mention" it in the types.xml you can borrow the correct lines from this file.
https://github.com/plone/plone.app.contenttypes/blob/master/plone/app/contenttypes/profiles/default/types.xml

1 Like

I may be mistaken but why not add z3c.jbot to your buildout.cfg eggs? or maybe use https://github.com/collective/collective.jbot ?

Ah, see https://training.plone.org/5/mastering_plone/eggs1.html?highlight=jbot

Both of you -- thanks.
@tkimnguyen Doh! But I can't seem to find it...

<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
    xmlns:i18n="http://namespaces.zope.org/i18n"
    i18n_domain="nhus.blog.post">

  <i18n:registerTranslations directory="locales" />

  <includeDependencies package="." />

  <include package=".browser" />


  <genericsetup:registerProfile
      name="default"
      title="nhus.blog.post"
      directory="profiles/default"
      description="Installs the nhus.blog.post add-on."
      provides="Products.GenericSetup.interfaces.EXTENSION"
      post_handler=".setuphandlers.post_install"
      />

  <genericsetup:registerProfile
      name="uninstall"
      title="nhus.blog.post (uninstall)"
      directory="profiles/uninstall"
      description="Uninstalls the nhus.blog.post add-on."
      provides="Products.GenericSetup.interfaces.EXTENSION"
      post_handler=".setuphandlers.uninstall"
      />


  <utility
      factory=".setuphandlers.HiddenProfiles"
      name="nhus.blog.post-hiddenprofiles" />

</configure>

I'm not sure what you're seeing to make you ask about ATContentTypes. I used the Dexterity Content Types part of the back-end to create the new content type, and you've seen all my code... but yeah... don't forget I first touched Python and Plone a week ago. :slight_smile:

@pigeonflight types.xml already existed, with the contents:

<?xml version="1.0" encoding="UTF-8"?>
<object name="portal_types" meta_type="Plone Types Tool">
  <object name="BlogPost" meta_type="Dexterity FTI"/>
</object>

I believe that comes from my choices when running mrbob; hopefully I got the object reference right.

I'm gathering my Folder.xml should only contain:

<property name="view_methods">
        <element value="blogroll_mk_1"/>
</property>

I have not yet successfully reached the stage of my addon appearing in the back-end; I'll take your word for it that I'm almost there :smiley:

@ Both again:

I guess I need to figure out wtf regarding my zcml, and add a jbot solution to my buildout...

One of your issues is the dependency on z3c.jbot (which you aren't really using at the moment).
You could remove it or make sure that z3c.jbot is in the eggs section of your buildout or the setup.py of your add-on.

You should almost never have to use pip when using buildout.

1 Like

@tkimnguyen I'm pretty sure that's not gonna work. The last time I got pip results like this and ran buildout, it gave me a 503... I'm guessing it'll happen again unless I remove this stuff posthaste.

Results of zeocluster$ sudo -u plone_buildout bin/pip install collective.jbot:

Collecting collective.jbot
/opt/plone/zeocluster/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:318: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/security.html#snimissingwarning.
  SNIMissingWarning
/opt/plone/zeocluster/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning
  Downloading collective.jbot-1.0a3.zip
Requirement already satisfied: setuptools in ./lib/python2.7/site-packages (from collective.jbot)
Collecting z3c.jbot (from collective.jbot)
  Downloading z3c.jbot-0.7.2.tar.gz
Collecting five.globalrequest (from collective.jbot)
  Downloading five.globalrequest-99.1-py2.py3-none-any.whl
Collecting plone.app.theming>=1.1 (from collective.jbot)
  Downloading plone.app.theming-2.0.tar.gz (1.0MB)
    100% |################################| 1.0MB 959kB/s
Collecting plone.resource (from collective.jbot)
  Downloading plone.resource-1.2.1.tar.gz
Requirement already satisfied: six>=1.6.0 in ./lib/python2.7/site-packages (from setuptools->collective.jbot)
Requirement already satisfied: packaging>=16.8 in ./lib/python2.7/site-packages (from setuptools->collective.jbot)
Requirement already satisfied: appdirs>=1.4.0 in ./lib/python2.7/site-packages (from setuptools->collective.jbot)
Collecting zope.pagetemplate (from z3c.jbot->collective.jbot)
  Downloading zope.pagetemplate-4.2.1-py2.py3-none-any.whl (49kB)
    100% |################################| 51kB 6.8MB/s
Collecting zope.component (from z3c.jbot->collective.jbot)
  Downloading zope.component-4.3.0-py2.py3-none-any.whl (70kB)
    100% |################################| 71kB 5.1MB/s
Collecting zope.configuration (from z3c.jbot->collective.jbot)
  Downloading zope.configuration-4.1.0-py2.py3-none-any.whl (68kB)
    100% |################################| 71kB 4.1MB/s
Collecting zope.security (from z3c.jbot->collective.jbot)
  Downloading zope.security-4.1.1.tar.gz (111kB)
    100% |################################| 112kB 3.8MB/s
Collecting zope.publisher (from z3c.jbot->collective.jbot)
  Downloading zope.publisher-4.3.2-py2.py3-none-any.whl (126kB)
    100% |################################| 133kB 3.4MB/s
Collecting Zope2>=4.0a3 (from five.globalrequest->collective.jbot)
  Downloading Zope2-4.0a6-py2.py3-none-any.whl (685kB)
    100% |################################| 686kB 1.5MB/s
Collecting Products.CMFPlone (from plone.app.theming>=1.1->collective.jbot)
  Downloading Products.CMFPlone-5.0.8.tar.gz (17.3MB)
    100% |################################| 17.3MB 43kB/s
Collecting diazo>=1.0.3 (from plone.app.theming>=1.1->collective.jbot)
  Downloading diazo-1.2.5.tar.gz (370kB)
    100% |################################| 378kB 2.9MB/s
Collecting docutils (from plone.app.theming>=1.1->collective.jbot)
  Downloading docutils-0.13.1-py2-none-any.whl (537kB)
    100% |################################| 542kB 2.0MB/s
Collecting lxml>=2.2.4 (from plone.app.theming>=1.1->collective.jbot)
  Downloading lxml-3.8.0-cp27-cp27mu-manylinux1_x86_64.whl (6.8MB)
    100% |################################| 6.8MB 153kB/s
Collecting plone.app.registry>=1.0a2 (from plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.registry-1.6.1-py2-none-any.whl (54kB)
    100% |################################| 61kB 10.0MB/s
Collecting plone.resourceeditor>=2.0.0.dev (from plone.app.theming>=1.1->collective.jbot)
  Downloading plone.resourceeditor-2.0.5.tar.gz (609kB)
    100% |################################| 614kB 2.0MB/s
Collecting plone.subrequest (from plone.app.theming>=1.1->collective.jbot)
  Downloading plone.subrequest-1.8.tar.gz
Collecting plone.transformchain (from plone.app.theming>=1.1->collective.jbot)
  Downloading plone.transformchain-1.2.0.tar.gz
Collecting repoze.xmliter>=0.3 (from plone.app.theming>=1.1->collective.jbot)
  Downloading repoze.xmliter-0.6.zip
Collecting roman (from plone.app.theming>=1.1->collective.jbot)
  Downloading roman-2.0.0.zip
Collecting zope.traversing (from plone.app.theming>=1.1->collective.jbot)
  Downloading zope.traversing-4.1.0-py2.py3-none-any.whl (48kB)
    100% |################################| 51kB 8.7MB/s
Collecting plone.caching (from plone.resource->collective.jbot)
  Downloading plone.caching-1.1.2.tar.gz
Collecting python-dateutil (from plone.resource->collective.jbot)
  Downloading python_dateutil-2.6.0-py2.py3-none-any.whl (194kB)
    100% |################################| 194kB 5.7MB/s
Collecting z3c.caching (from plone.resource->collective.jbot)
  Downloading z3c.caching-2.0a1.tar.gz
Collecting zope.filerepresentation (from plone.resource->collective.jbot)
  Downloading zope.filerepresentation-4.1.0-py2.py3-none-any.whl
Collecting zope.interface (from plone.resource->collective.jbot)
  Downloading zope.interface-4.4.2-cp27-cp27mu-manylinux1_x86_64.whl (170kB)
    100% |################################| 174kB 6.4MB/s
Collecting zope.schema (from plone.resource->collective.jbot)
  Downloading zope.schema-4.4.2-py2.py3-none-any.whl (67kB)
    100% |################################| 71kB 10.3MB/s
Requirement already satisfied: pyparsing in ./lib/python2.7/site-packages (from packaging>=16.8->setuptools->collective.jbot)
Collecting zope.tal (from zope.pagetemplate->z3c.jbot->collective.jbot)
  Downloading zope.tal-4.2.0-py2-none-any.whl (138kB)
    100% |################################| 143kB 7.9MB/s
Collecting zope.i18nmessageid (from zope.pagetemplate->z3c.jbot->collective.jbot)
  Downloading zope.i18nmessageid-4.1.0.tar.gz
Collecting zope.i18n>=4.0.1 (from zope.pagetemplate->z3c.jbot->collective.jbot)
  Downloading zope.i18n-4.2.0-py2.py3-none-any.whl (789kB)
    100% |################################| 798kB 1.5MB/s
Collecting zope.tales (from zope.pagetemplate->z3c.jbot->collective.jbot)
  Downloading zope.tales-4.1.1-py2.py3-none-any.whl
Collecting zope.event (from zope.component->z3c.jbot->collective.jbot)
  Downloading zope.event-4.2.0-py2.py3-none-any.whl
Collecting zope.location (from zope.security->z3c.jbot->collective.jbot)
  Downloading zope.location-4.0.3-py2.py3-none-any.whl
Collecting zope.proxy>=4.1.0 (from zope.security->z3c.jbot->collective.jbot)
  Downloading zope.proxy-4.2.1.tar.gz (42kB)
    100% |################################| 51kB 10.0MB/s
Collecting zope.browser (from zope.publisher->z3c.jbot->collective.jbot)
  Downloading zope.browser-2.1.0-py2.py3-none-any.whl
Collecting zope.contenttype>=4.0.0 (from zope.publisher->z3c.jbot->collective.jbot)
  Downloading zope.contenttype-4.2.0-py2.py3-none-any.whl
Collecting zope.exceptions (from zope.publisher->z3c.jbot->collective.jbot)
  Downloading zope.exceptions-4.1.0-py2.py3-none-any.whl
Collecting zope.globalrequest (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading zope.globalrequest-1.4-py2.py3-none-any.whl
Collecting DocumentTemplate (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading DocumentTemplate-2.13.4.tar.gz (65kB)
    100% |################################| 71kB 10.3MB/s
Collecting Acquisition (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading Acquisition-4.4.2.tar.gz (60kB)
    100% |################################| 61kB 9.2MB/s
Collecting zope.browserpage>=4.0 (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading zope.browserpage-4.1.0-py2.py3-none-any.whl
Collecting zope.sequencesort (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading zope.sequencesort-4.0.1-py2.py3-none-any.whl
Collecting BTrees (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading BTrees-4.4.1-cp27-cp27mu-manylinux1_x86_64.whl (1.3MB)
    100% |################################| 1.3MB 892kB/s
Collecting zope.viewlet (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading zope.viewlet-4.0.0-py2.py3-none-any.whl (51kB)
    100% |################################| 61kB 9.6MB/s
Collecting zope.lifecycleevent (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading zope.lifecycleevent-4.1.0-py2.py3-none-any.whl
Collecting ZConfig>=2.9.2 (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading ZConfig-3.1.0.tar.gz (261kB)
    100% |################################| 266kB 4.2MB/s
Collecting zope.browsermenu (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading zope.browsermenu-4.2-py2.py3-none-any.whl
Collecting MultiMapping (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading MultiMapping-4.0-py2.py3-none-any.whl
Collecting zope.container (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading zope.container-4.1.0.tar.gz (65kB)
    100% |################################| 71kB 10.2MB/s
Collecting z3c.pt (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading z3c.pt-3.0.tar.gz (56kB)
    100% |################################| 61kB 9.6MB/s
Collecting zope.testbrowser (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading zope.testbrowser-5.2-py2.py3-none-any.whl (64kB)
    100% |################################| 71kB 9.2MB/s
Collecting ZODB (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading ZODB-5.2.4.tar.gz (510kB)
    100% |################################| 512kB 2.1MB/s
Collecting AccessControl>=4.0a4 (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading AccessControl-4.0a7.tar.gz (97kB)
    100% |################################| 102kB 9.9MB/s
Requirement already satisfied: RestrictedPython in ./lib/python2.7/site-packages (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
Collecting zope.size (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading zope.size-4.1.0-py2.py3-none-any.whl
Collecting zope.browserresource>=3.11 (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading zope.browserresource-4.1.0-py2.py3-none-any.whl (41kB)
    100% |################################| 51kB 11.0MB/s
Collecting waitress (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading waitress-1.0.2-py2.py3-none-any.whl (113kB)
    100% |################################| 122kB 8.7MB/s
Collecting zope.processlifetime (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading zope.processlifetime-2.1.0.tar.gz
Collecting ExtensionClass (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading ExtensionClass-4.3.0.tar.gz
Collecting Persistence (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading Persistence-2.13.2.zip (96kB)
    100% |################################| 102kB 8.8MB/s
Requirement already satisfied: transaction in ./lib/python2.7/site-packages (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
Collecting zope.deferredimport (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading zope.deferredimport-4.1.0-py2.py3-none-any.whl
Collecting zExceptions>=3.4 (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading zExceptions-3.6.1.tar.gz
Collecting zope.testing (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading zope.testing-4.6.2-py2.py3-none-any.whl (64kB)
    100% |################################| 71kB 9.7MB/s
Collecting zope.site (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading zope.site-4.0.0-py2.py3-none-any.whl
Collecting zope.contentprovider (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading zope.contentprovider-4.0.0-py2.py3-none-any.whl
Collecting zope.ptresource (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading zope.ptresource-4.0.0-py2.py3-none-any.whl
Collecting DateTime (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
  Downloading DateTime-4.2-py2.py3-none-any.whl (60kB)
    100% |################################| 61kB 9.3MB/s
Requirement already satisfied: PasteDeploy in ./lib/python2.7/site-packages (from Zope2>=4.0a3->five.globalrequest->collective.jbot)
Collecting Pillow (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Pillow-4.1.1-cp27-cp27mu-manylinux1_x86_64.whl (5.7MB)
    100% |################################| 5.7MB 195kB/s
Collecting Products.CMFCore (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.CMFCore-2.3.1.tar.gz (295kB)
    100% |################################| 296kB 4.1MB/s
Collecting Products.CMFDiffTool (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.CMFDiffTool-3.1.4.tar.gz (40kB)
    100% |################################| 40kB 9.2MB/s
Collecting Products.CMFDynamicViewFTI (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.CMFDynamicViewFTI-4.1.5.tar.gz
Collecting Products.CMFEditions (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.CMFEditions-3.1.tar.gz (1.8MB)
    100% |################################| 1.8MB 577kB/s
Collecting Products.CMFQuickInstallerTool (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.CMFQuickInstallerTool-3.0.15.tar.gz (47kB)
    100% |################################| 51kB 10.0MB/s
Collecting Products.CMFUid (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.CMFUid-2.2.2.tar.gz
Collecting Products.DCWorkflow (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.DCWorkflow-2.3.0.tar.gz (74kB)
    100% |################################| 81kB 10.2MB/s
Collecting Products.ExtendedPathIndex (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.ExtendedPathIndex-3.1.1.tar.gz
Collecting Products.ExternalEditor (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.ExternalEditor-2.0.2.tar.gz (47kB)
    100% |################################| 51kB 9.1MB/s
Collecting Products.GenericSetup>=1.8.0 (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.GenericSetup-1.9.1.tar.gz (139kB)
    100% |################################| 143kB 7.6MB/s
Collecting Products.MimetypesRegistry (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.MimetypesRegistry-2.1.tar.gz (411kB)
    100% |################################| 419kB 2.8MB/s
Collecting Products.PasswordResetTool (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.PasswordResetTool-2.2.3.tar.gz (40kB)
    100% |################################| 40kB 8.3MB/s
Collecting Products.PlacelessTranslationService (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.PlacelessTranslationService-2.0.7.tar.gz (68kB)
    100% |################################| 71kB 9.2MB/s
Collecting Products.PlonePAS (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.PlonePAS-5.0.14.tar.gz (111kB)
    100% |################################| 112kB 8.3MB/s
Collecting Products.PluggableAuthService (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.PluggableAuthService-1.11.0.tar.gz (156kB)
    100% |################################| 163kB 6.4MB/s
Collecting Products.PluginRegistry (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.PluginRegistry-1.5.tar.gz
Collecting Products.PortalTransforms (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.PortalTransforms-3.0.0.tar.gz (215kB)
    100% |################################| 225kB 5.3MB/s
Collecting Products.ResourceRegistries (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.ResourceRegistries-3.0.5.tar.gz (79kB)
    100% |################################| 81kB 8.7MB/s
Collecting Products.contentmigration (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.contentmigration-2.1.16.tar.gz
Collecting Products.statusmessages (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Products.statusmessages-4.1.2.tar.gz
Collecting ZODB3 (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading ZODB3-3.11.0.tar.gz (55kB)
    100% |################################| 61kB 9.4MB/s
Collecting borg.localrole (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading borg.localrole-3.1.3.tar.gz
Collecting cssmin (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading cssmin-0.2.0.tar.gz
Collecting five.customerize (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading five.customerize-1.1.zip
Collecting five.localsitemanager (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading five.localsitemanager-3.0.1-py2.py3-none-any.whl
Collecting five.pt (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading five.pt-2.2.4.tar.gz
Collecting mockup (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading mockup-2.4.1.tar.gz (472kB)
    100% |################################| 481kB 2.6MB/s
Collecting plone.api>=1.4.4 (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.api-1.7.tar.gz (86kB)
    100% |################################| 92kB 9.7MB/s
Collecting plone.app.content (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.content-3.4.1.tar.gz (92kB)
    100% |################################| 92kB 9.8MB/s
Collecting plone.app.contentlisting (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.contentlisting-1.2.9.tar.gz
Collecting plone.app.contentmenu>=1.1.6dev-r22380 (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.contentmenu-2.2.2.tar.gz
Collecting plone.app.contentrules (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.contentrules-4.0.16.tar.gz (77kB)
    100% |################################| 81kB 9.5MB/s
Collecting plone.app.contenttypes (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.contenttypes-1.4-py2-none-any.whl (236kB)
    100% |################################| 245kB 5.0MB/s
Collecting plone.app.controlpanel (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.controlpanel-3.0.4.tar.gz (43kB)
    100% |################################| 51kB 11.1MB/s
Collecting plone.app.customerize (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.customerize-1.3.7.tar.gz
Collecting plone.app.dexterity (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.dexterity-2.4.2.tar.gz (278kB)
    100% |################################| 286kB 3.9MB/s
Collecting plone.app.discussion (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.discussion-3.0.1-py2.py3-none-any.whl (163kB)
    100% |################################| 163kB 6.1MB/s
Collecting plone.app.folder (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.folder-1.2.3.tar.gz
Collecting plone.app.i18n (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.i18n-3.0.4.tar.gz
Collecting plone.app.multilingual (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.multilingual-5.0.7-py2.py3-none-any.whl (321kB)
    100% |################################| 327kB 3.7MB/s
Collecting plone.app.layout>=1.1.7dev-r23744 (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.layout-2.7.0.tar.gz (112kB)
    100% |################################| 122kB 8.8MB/s
Collecting plone.app.linkintegrity>=1.0.3 (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.linkintegrity-3.3.1-py2-none-any.whl (44kB)
    100% |################################| 51kB 10.6MB/s
Collecting plone.app.locales (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.locales-5.1.2.tar.gz (10.2MB)
    100% |################################| 10.2MB 79kB/s
Collecting plone.app.portlets (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.portlets-4.3.0.tar.gz (121kB)
    100% |################################| 122kB 3.3MB/s
Collecting plone.app.redirector (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.redirector-1.3.4.tar.gz
Collecting plone.app.users (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.users-2.3.8.tar.gz (72kB)
    100% |################################| 81kB 10.7MB/s
Collecting plone.app.uuid (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.uuid-1.1.3.tar.gz
Collecting plone.app.viewletmanager (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.viewletmanager-2.0.10.tar.gz
Collecting plone.app.vocabularies (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.vocabularies-4.0.3.tar.gz (46kB)
    100% |################################| 51kB 6.3MB/s
Collecting plone.app.workflow (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.app.workflow-3.0-py2.py3-none-any.whl (44kB)
    100% |################################| 51kB 10.2MB/s
Collecting plone.batching (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.batching-1.1.1.tar.gz
Collecting plone.browserlayer>=1.0rc4 (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.browserlayer-2.2.0.tar.gz
Collecting plone.contentrules (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.contentrules-2.0.6.tar.gz
Collecting plone.i18n (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.i18n-3.0.7.tar.gz (128kB)
    100% |################################| 133kB 6.2MB/s
Collecting plone.indexer (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.indexer-1.0.4.tar.gz
Collecting plone.intelligenttext (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.intelligenttext-2.1.0.tar.gz
Collecting plone.locking (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.locking-2.2-py2-none-any.whl
Collecting plone.memoize (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.memoize-1.2.0.tar.gz
Collecting plone.outputfilters (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.outputfilters-3.0.1.tar.gz (54kB)
    100% |################################| 61kB 10.1MB/s
Collecting plone.portlet.collection (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading plone.portlet.collection-3.1.tar.gz
Collecting plone.portlet.static (from Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)

(snip)

  Downloading python-gettext-3.0.zip
Collecting Markdown>=2.6.5 (from Products.PortalTransforms->Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading Markdown-2.6.8.tar.gz (307kB)
    100% |################################| 317kB 3.8MB/s
Collecting ZEO>=4.0.0dev (from ZODB3->Products.CMFPlone->plone.app.theming>=1.1->collective.jbot)
  Downloading ZEO-5.1.0.tar.gz (266kB)
    100% |################################| 276kB 4.3MB/s
    Complete output from command python setup.py egg_info:
    This version of ZEO requires Python 2.7.9 or higher

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-shMexf/ZEO/

@pigeonflight

Ok, I commented out these lines in my zcml:

  <!-- include package="z3c.jbot" file="meta.zcml" / -->
  <!-- browser:jbot
      directory="overrides"
      layer="nhus.blog.post.interfaces.INhusBlogPostLayer"
      / -->

and deleted a line in src/nhus.blog.post/setup.py:

install_requires=[
    'plone.api',
    'Products.GenericSetup>=1.8.2',
    'setuptools',
############################ line removed #       'z3c.jbot',
    'plone.app.dexterity',
],

This got me a successful buildout with no mention of requirements, but a broken (503) site.

zeocluster$ sudo -u plone_daemon bin/client1 fg:

2017-06-14 21:31:00 INFO ZServer HTTP server started at Wed Jun 14 21:31:00 2017
        Hostname: 0.0.0.0
        Port: 8080
2017-06-14 21:31:02 INFO Products.PloneHotfix20160830 Applied resource patch
2017-06-14 21:31:02 INFO Products.PloneHotfix20160830 Applied confirm patch
2017-06-14 21:31:02 INFO Products.PloneHotfix20160830 Applied z3c_form patch
2017-06-14 21:31:02 INFO Products.PloneHotfix20160830 Applied in_portal patch
2017-06-14 21:31:02 INFO Products.PloneHotfix20160830 Applied plonerootlogin patch
2017-06-14 21:31:02 INFO Products.PloneHotfix20160830 Applied redirects patch
2017-06-14 21:31:02 INFO Products.PloneHotfix20160830 Applied redirect_folderfactories patch
2017-06-14 21:31:02 INFO Products.PloneHotfix20160830 Applied redirect_qi patch
2017-06-14 21:31:02 INFO Products.PloneHotfix20160830 Applied redirectto patch
2017-06-14 21:31:02 INFO Products.PloneHotfix20160830 Applied discussion patch
2017-06-14 21:31:02 INFO Products.PloneHotfix20160830 Applied user patch
2017-06-14 21:31:02 INFO Products.PloneHotfix20160830 Applied zmi patch
2017-06-14 21:31:02 INFO Products.PloneHotfix20160830 Hotfix installed
2017-06-14 21:31:02 INFO Products.PloneHotfix20161129 Applied publishing patch
2017-06-14 21:31:02 INFO Products.PloneHotfix20161129 Applied copy patch
2017-06-14 21:31:02 INFO Products.PloneHotfix20161129 You should call /@@apply-hotfix20161129 on all Plone Sites that have comments enabled.
2017-06-14 21:31:02 INFO Products.PloneHotfix20161129 Applied comments patch
2017-06-14 21:31:02 INFO Products.PloneHotfix20161129 Hotfix installed
2017-06-14 21:31:03 INFO ZEO.ClientStorage zeostorage ClientStorage (pid=23167) created RW/normal for storage: '1'
2017-06-14 21:31:03 INFO ZEO.cache created temporary cache file '<fdopen>'
2017-06-14 21:31:03 WARNING ZEO.zrpc (23167) CW: error connecting to ('127.0.0.1', 8100): ECONNREFUSED
2017-06-14 21:31:03 WARNING ZEO.zrpc (23167) CW: error connecting to ('127.0.0.1', 8100): ECONNREFUSED
2017-06-14 21:31:03 WARNING ZEO.zrpc (23167) CW: error connecting to ('127.0.0.1', 8100): ECONNREFUSED
2017-06-14 21:31:08 WARNING ZEO.zrpc (23167) CW: error connecting to ('127.0.0.1', 8100): ECONNREFUSED
2017-06-14 21:31:08 WARNING ZEO.zrpc (23167) CW: error connecting to ('127.0.0.1', 8100): ECONNREFUSED
2017-06-14 21:31:08 WARNING ZEO.zrpc (23167) CW: error connecting to ('127.0.0.1', 8100): ECONNREFUSED
2017-06-14 21:31:18 WARNING ZEO.zrpc (23167) CW: error connecting to ('127.0.0.1', 8100): ECONNREFUSED
2017-06-14 21:31:18 WARNING ZEO.zrpc (23167) CW: error connecting to ('127.0.0.1', 8100): ECONNREFUSED
2017-06-14 21:31:18 WARNING ZEO.zrpc (23167) CW: error connecting to ('127.0.0.1', 8100): ECONNREFUSED
2017-06-14 21:31:38 WARNING ZEO.zrpc (23167) CW: error connecting to ('127.0.0.1', 8100): ECONNREFUSED
2017-06-14 21:31:38 WARNING ZEO.zrpc (23167) CW: error connecting to ('127.0.0.1', 8100): ECONNREFUSED
2017-06-14 21:31:38 WARNING ZEO.zrpc (23167) CW: error connecting to ('127.0.0.1', 8100): ECONNREFUSED
2017-06-14 21:32:18 WARNING ZEO.zrpc (23167) CW: error connecting to ('127.0.0.1', 8100): ECONNREFUSED
2017-06-14 21:32:18 WARNING ZEO.zrpc (23167) CW: error connecting to ('127.0.0.1', 8100): ECONNREFUSED
2017-06-14 21:32:18 WARNING ZEO.zrpc (23167) CW: error connecting to ('127.0.0.1', 8100): ECONNREFUSED

Hurk...?

Seems you need to have the zeoserver running.

1 Like

@pigeonflight ... Epic forehead slap. Yyyyep. Which led back to the zcml... only this time I noticed the line number pointer. Found and fixed the problem with my zcml... redid buildout, restarted, and we're back to a 503.

instance fg now gives me:

zope.configuration.xmlconfig.ZopeXMLConfigurationError: File "/opt/plone/zeocluster/parts/client1/etc/site.zcml", line 16.2-16.23
    ZopeXMLConfigurationError: File "/opt/plone/buildout-cache/eggs/Products.ATContentTypes-2.2.13-py2.7.egg/Products/ATContentTypes/configure.zcml", line 18.2-18.44
    ZopeXMLConfigurationError: File "/opt/plone/buildout-cache/eggs/plone.app.collection-1.1.7-py2.7.egg/plone/app/collection/configure.zcml", line 9.2-9.45
    ZopeXMLConfigurationError: File "/opt/plone/buildout-cache/eggs/plone.app.querystring-1.3.17-py2.7.egg/plone/app/querystring/configure.zcml", line 11.2-11.42
    ZopeXMLConfigurationError: File "/opt/plone/buildout-cache/eggs/plone.app.registry-1.5-py2.7.egg/plone/app/registry/configure.zcml", line 12.4-12.34
    ZopeXMLConfigurationError: File "/opt/plone/buildout-cache/eggs/plone.app.registry-1.5-py2.7.egg/plone/app/registry/browser/configure.zcml", line 6.4-6.43
    ZopeXMLConfigurationError: File "/opt/plone/buildout-cache/eggs/plone.app.z3cform-1.2.3-py2.7.egg/plone/app/z3cform/configure.zcml", line 10.2-10.41
    ZopeXMLConfigurationError: File "/opt/plone/buildout-cache/eggs/plone.app.widgets-2.0.7-py2.7.egg/plone/app/widgets/configure.zcml", line 12.2-12.41
    ZopeXMLConfigurationError: File "/opt/plone/buildout-cache/eggs/Products.CMFPlone-5.0.7-py2.7.egg/Products/CMFPlone/configure.zcml", line 108.4-112.10
    ZopeXMLConfigurationError: File "/opt/plone/zeocluster/src/nhus.blog.post/src/nhus/blog/post/configure.zcml", line 11.2-11.32
    ZopeXMLConfigurationError: File "/opt/plone/zeocluster/src/nhus.blog.post/src/nhus/blog/post/browser/configure.zcml", line 21.2-26.8
    ValueError: ('No such file', '/opt/plone/zeocluster/src/nhus.blog.post/src/nhus/blog/post/browser/blogroll_view.pt')

Progress!

Looks like progress to me.

I'm still impressed!

1 Like

It sure is! I moved a file:

zeocluster$ sudo -u plone_buildout mv src/nhus.blog.post/src/nhus/blog/post/browser/templates/blogroll_view.pt src/nhus.blog.post/src/nhus/blog/post/browser/

...then redid buildout and restarted the server... it came back up AND MY ADDON IS INSTALLABLE!

However... no custom view yet. The following gives me a friendly Plone 404 page:

http://mywebsite.xyz/writings/blogs/sudoers-log/@@blogroll_view

...and there is nothing new under the display menu.

Thank you so much for your patience so far. Any further pointers to help me get that neurotransmitter rush from my quickstart project?

Should I perhaps add the view to "Default View Method" and "Available View Method" on:

http://mysite.xyz/portal_types/blog_post/manage_propertiesForm

? Or is there a risk of crashing the site?

UPDATE:

I can't post any more replies for 17 hours, so I'll update this post and hope someone notices.

zeocluster$ cd /opt/plone/zeocluster/src/nhus.blog.post/src/nhus/blog/post/profiles/default/
default$ cat types.xml

<?xml version="1.0" encoding="UTF-8"?>
<object name="portal_types" meta_type="Plone Types Tool">
  <object name="Blog Post" meta_type="Dexterity FTI"/>
  <object name="Folder" meta_type="Dexterity FTI"/>
</object>

Aha! That got me a blank white page with this text:

<Products.Five.metaclass.BlogrollView object at 0xb219090>

Lol... progress! I also tried adding /@@blogroll_mk_1 to the URL while viewing an individual blog post, same result, different address.

<Products.Five.metaclass.BlogrollView object at 0xba57550>

Regarding:

Re-reading your blog_view.pt file, it looks like I may have made an assumption about the folder thing. Your view appears to be a custom view for each blog post, in which case you want to customize profile/types/blog_post.xml.

... do you mean create a types folder under src/nhus.blog.post/src/nhus/blog/post/profiles?

Until you change the name in your zcml, you should be trying to access @@blogroll_mk_1

1 Like

Plone Foundation Code of Conduct