From 4a7a133fe44954f4f2a96582fee37ceebe6d8ca4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louisa=20v=2E=20H=C3=BClsen?= Date: Thu, 15 Feb 2024 17:30:53 +0100 Subject: [PATCH] ZO-4687: Make date_last_modified independent of DAV server --- core/docs/changelog/ZO-4687.change | 1 + core/src/zeit/cms/checkout/manager.py | 6 ++++++ core/src/zeit/cms/content/dublincore.py | 7 ++++++- 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 core/docs/changelog/ZO-4687.change diff --git a/core/docs/changelog/ZO-4687.change b/core/docs/changelog/ZO-4687.change new file mode 100644 index 0000000000..e6feac18ab --- /dev/null +++ b/core/docs/changelog/ZO-4687.change @@ -0,0 +1 @@ +ZO-4687: Make date_last_modified independent of DAV server diff --git a/core/src/zeit/cms/checkout/manager.py b/core/src/zeit/cms/checkout/manager.py index c72cf8b2cf..4a446d1964 100644 --- a/core/src/zeit/cms/checkout/manager.py +++ b/core/src/zeit/cms/checkout/manager.py @@ -1,4 +1,5 @@ import grokcore.component as grok +import pendulum import zope.app.locking.interfaces import zope.cachedescriptors.property import zope.component @@ -133,11 +134,13 @@ def checkin(self, event=True, semantic_change=None, ignore_conflicts=False, publ self.context.uniqueId, 'Cannot checkin: %s' % reason ) workingcopy = self.context.__parent__ + sc = zeit.cms.content.interfaces.ISemanticChange(self.context) if semantic_change is None: semantic_change = sc.has_semantic_change if semantic_change: sc.update() + if event: zope.event.notify( zeit.cms.checkout.interfaces.BeforeCheckinEvent( @@ -164,6 +167,9 @@ def checkin(self, event=True, semantic_change=None, ignore_conflicts=False, publ else: msg = _('Checked in') zeit.objectlog.interfaces.ILog(added).log(msg) + dc = zope.dublincore.interfaces.IDCTimes(added) + if not publishing: + dc.modified = pendulum.now() lockable = zope.app.locking.interfaces.ILockable(added, None) # Since publishing starts and ends with its own lock()/unlock(), it # would be premature to already unlock during the cycle() step. diff --git a/core/src/zeit/cms/content/dublincore.py b/core/src/zeit/cms/content/dublincore.py index cbf9df8071..0435ab1d23 100644 --- a/core/src/zeit/cms/content/dublincore.py +++ b/core/src/zeit/cms/content/dublincore.py @@ -2,7 +2,9 @@ import pendulum import zope.dublincore.interfaces +from zeit.cms.content.interfaces import WRITEABLE_LIVE import zeit.cms.content.dav +import zeit.cms.interfaces import zeit.cms.repository.interfaces import zeit.cms.workingcopy.interfaces @@ -15,7 +17,10 @@ class RepositoryDCTimes(zeit.cms.content.dav.DAVPropertiesAdapter): zope.dublincore.interfaces.IDCTimes['created'], 'DAV:', 'creationdate' ) modified = zeit.cms.content.dav.DAVProperty( - zope.dublincore.interfaces.IDCTimes['modified'], 'DAV:', 'getlastmodified' + zope.dublincore.interfaces.IDCTimes['modified'], + zeit.cms.interfaces.DOCUMENT_SCHEMA_NS, + 'date-last-modified', + writeable=WRITEABLE_LIVE, )