Plone as Omni Presence WebDAV server

This sounded like an interesting use case for Plone and WebDAV, especially with Member folders enabled (of course, Plone would not be an ideal solution for this, but this would sound like a nice extra feature without extra stack):

TL; DR; It seems to work, though, would probably require some extra configuration / add-on development to hide or add a sane web presentation for the synchronized content:

I tried this with Plone 5 with Dexterity container, and had the following issues:

  • plone.dexterity has probably a bug, which results objects with empty IDs to be created (proposed fix in https://github.com/plone/plone.dexterity/pull/29)
  • Omni Presence conformance test uses filenames with colons, so colons must be allowed in objects IDs (either by monkeypatching OFS.ObjectManager.bad_id from Zope2 or using a custom container class with fixed self._checkId)
  • webdav.Collection.Collection.dav_init from Zope2 must be fixed to prevent injecting additional Date-header to fix Omni Presence conformance test to pass
  • Members require Add folder -permission to be able to use their member folders with Omni Presence

So, the only real issue I had with Dexterity WebDAV support. The other issues were required to be fixed to please Omni Presence conformation tests (which is a mandatory test in adding a new WebDAV server).

If someone would like to try, I packaged the required monkeypatches into an add-on https://github.com/datakurre/experimental.omnipresence

2 Likes