fix removal of versions; apply also to versionable concepts
This commit is contained in:
parent
930249e057
commit
40cc2c4079
2 changed files with 16 additions and 13 deletions
|
@ -1,10 +1,7 @@
|
||||||
<!-- $Id$ -->
|
|
||||||
|
|
||||||
<configure
|
<configure
|
||||||
xmlns:zope="http://namespaces.zope.org/zope"
|
xmlns:zope="http://namespaces.zope.org/zope"
|
||||||
xmlns:browser="http://namespaces.zope.org/browser"
|
xmlns:browser="http://namespaces.zope.org/browser"
|
||||||
i18n_domain="zope"
|
i18n_domain="zope">
|
||||||
>
|
|
||||||
|
|
||||||
<zope:adapter factory="loops.versioning.versionable.VersionableResource"
|
<zope:adapter factory="loops.versioning.versionable.VersionableResource"
|
||||||
trusted="True" />
|
trusted="True" />
|
||||||
|
@ -19,8 +16,12 @@
|
||||||
<zope:subscriber
|
<zope:subscriber
|
||||||
for="loops.interfaces.IResource
|
for="loops.interfaces.IResource
|
||||||
zope.app.container.interfaces.IObjectRemovedEvent"
|
zope.app.container.interfaces.IObjectRemovedEvent"
|
||||||
handler="loops.versioning.versionable.cleanupVersions"
|
handler="loops.versioning.versionable.cleanupVersions" />
|
||||||
/>
|
|
||||||
|
<zope:subscriber
|
||||||
|
for="loops.interfaces.IConcept
|
||||||
|
zope.app.container.interfaces.IObjectRemovedEvent"
|
||||||
|
handler="loops.versioning.versionable.cleanupVersions" />
|
||||||
|
|
||||||
<!-- user interface -->
|
<!-- user interface -->
|
||||||
|
|
||||||
|
@ -28,7 +29,6 @@
|
||||||
name="listversions"
|
name="listversions"
|
||||||
for="loops.interfaces.IResource"
|
for="loops.interfaces.IResource"
|
||||||
class="loops.versioning.browser.ListVersions"
|
class="loops.versioning.browser.ListVersions"
|
||||||
permission="zope.View"
|
permission="zope.View" />
|
||||||
/>
|
|
||||||
|
|
||||||
</configure>
|
</configure>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Copyright (c) 2012 Helmut Merz helmutm@cy55.de
|
# Copyright (c) 2014 Helmut Merz helmutm@cy55.de
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
@ -222,22 +222,25 @@ class VersionableResource(object):
|
||||||
|
|
||||||
|
|
||||||
def cleanupVersions(context, event):
|
def cleanupVersions(context, event):
|
||||||
""" Called upon deletion of a resource.
|
""" Called upon deletion of a resource or concept.
|
||||||
"""
|
"""
|
||||||
vContext = IVersionable(context, None)
|
vContext = IVersionable(context, None)
|
||||||
if vContext is None:
|
if vContext is None:
|
||||||
return
|
return
|
||||||
rm = context.getLoopsRoot().getResourceManager()
|
#rm = context.getLoopsRoot().getResourceManager()
|
||||||
|
rm = getParent(context)
|
||||||
if context == vContext.master:
|
if context == vContext.master:
|
||||||
toBeDeleted = []
|
toBeDeleted = []
|
||||||
for v in vContext.versions.values():
|
for v in vContext.versions.values():
|
||||||
if v != context:
|
if v != context:
|
||||||
toBeDeleted.append(getName(v))
|
toBeDeleted.append(getName(v))
|
||||||
for name in toBeDeleted:
|
for name in toBeDeleted:
|
||||||
|
# TODO: notify(ObjectRemovedEvent(rm[name]))
|
||||||
del rm[name]
|
del rm[name]
|
||||||
else:
|
else:
|
||||||
vId = vContext.versionId
|
vId = vContext.versionId
|
||||||
vMaster = IVersionable(vContext.master)
|
vMaster = vContext.versionableMaster
|
||||||
|
if vId in vMaster.versions:
|
||||||
del vMaster.versions[vId]
|
del vMaster.versions[vId]
|
||||||
if vMaster.getVersioningAttribute('currentVersion', None) == context:
|
if vMaster.getVersioningAttribute('currentVersion', None) == context:
|
||||||
newCurrent = sorted(vMaster.versions.items())[-1][1]
|
newCurrent = sorted(vMaster.versions.items())[-1][1]
|
||||||
|
|
Loading…
Add table
Reference in a new issue