make number and labels of version levels configurable

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@4044 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2010-10-23 07:52:31 +00:00
parent 499f86848b
commit b55a2f8952
7 changed files with 47 additions and 8 deletions

View file

@ -487,6 +487,10 @@ class BaseView(GenericView, I18NView):
# versioning
@Lazy
def versionable(self):
return IVersionable(self.target, None)
@Lazy
def useVersioning(self):
if self.globalOptions('useVersioning'):
@ -495,6 +499,13 @@ class BaseView(GenericView, I18NView):
if options:
return 'useVersioning' in options.value
@Lazy
def versionLevels(self):
if self.versionable is not None:
return reversed([dict(token=idx, label=label)
for idx, label in enumerate(self.versionable.versionLevels)])
return []
@Lazy
def versionId(self):
versionable = IVersionable(self.target, None)

View file

@ -617,7 +617,8 @@ class EditObject(FormController, I18NView):
form = self.request.form
if form.get('version.create'):
versionable = IVersionable(obj)
level = int(form.get('version.level', 1))
#level = int(form.get('version.level', 1))
level = int(form.get('version.level', 0))
version = versionable.createVersion(level)
notify(ObjectCreatedEvent(version))
return version

View file

@ -231,9 +231,12 @@
<label style="display: inline"
for="version.create"><span i18n:translate="">
New version</span>:</label>
<select name="version.level">
<option value="1" i18n:translate="">minor</option>
<option value="0" i18n:translate="">major</option>
<select name="version.level"
tal:condition="python: len(view.versionLevels) > 1">
<option tal:repeat="level view/versionLevels"
i18n:translate=""
tal:attributes="value level/token"
tal:content="level/label" />
</select>
</td>
</tr>

View file

@ -29,6 +29,10 @@ configuration):
>>> len(concepts) + len(resources)
18
>>> loopsRoot = site['loops']
>>> #loopsRoot.options = ['useVersioning:rev']
>>> loopsRoot.options = ['useVersioning']
External Collections
====================

View file

@ -31,6 +31,9 @@ configuration):
>>> len(concepts) + len(resources)
23
>>> loopsRoot = site['loops']
>>> loopsRoot.options = ['useVersioning']
Version Information
===================
@ -46,6 +49,8 @@ adapter on the object.
>>> d001.title
u'Doc 001'
>>> vD001 = IVersionable(d001)
>>> vD001.versionLevels
['major', 'minor']
If there aren't any versions associated with the object we get the default
values:

View file

@ -29,6 +29,7 @@ from loops.interfaces import IResource, IIndexAttributes
from loops.common import LoopsDCAdapter
from loops.concept import Concept
from loops.concept import IndexAttributes as ConceptIndexAttributes
from loops.config.base import LoopsOptions
from loops.interfaces import ILoopsObject, IConcept
from loops.resource import Resource
from loops.resource import IndexAttributes as ResourceIndexAttributes
@ -55,6 +56,7 @@ class TestSite(object):
component.provideAdapter(ZDCAnnotatableAdapter, (ILoopsObject,), IZopeDublinCore)
component.provideAdapter(AttributeAnnotations, (ILoopsObject,))
component.provideAdapter(LoopsDCAdapter, (IConcept,), IZopeDublinCore)
component.provideAdapter(LoopsOptions)
component.provideAdapter(ConceptType)
component.provideAdapter(ResourceType)

View file

@ -29,9 +29,10 @@ from zope.cachedescriptors.property import Lazy
from zope.schema.interfaces import IField
from zope.traversing.api import getName, getParent
from cybertools.meta.interfaces import IOptions
from cybertools.text.mimetypes import extensions
from cybertools.typology.interfaces import IType
from loops.common import adapted
from loops.common import adapted, baseObject
from loops.interfaces import IResource, IExternalFile
from loops.versioning.interfaces import IVersionable
@ -67,13 +68,25 @@ class VersionableResource(object):
value = getattr(self.context, attrName, _not_found)
if value is _not_found:
versions = OOBTree()
versions['1.1'] = self.context
versionId = '.'.join('1' for x in self.versionLevels)
#versions['1.1'] = self.context
versions[versionId] = self.context
setattr(self.context, attrName, versions)
#self.versions['1.1'] = self.context
@Lazy
def versionLevels(self):
options = IOptions(self.master.getLoopsRoot()).useVersioning
if options:
if isinstance(options, list):
return options
return ['major', 'minor']
return []
@Lazy
def versionNumbers(self):
return self.getVersioningAttribute('versionNumbers', (1, 1))
#return self.getVersioningAttribute('versionNumbers', (1, 1))
return self.getVersioningAttribute('versionNumbers',
tuple(1 for x in self.versionLevels))
@Lazy
def variantIds(self):