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 # versioning
@Lazy
def versionable(self):
return IVersionable(self.target, None)
@Lazy @Lazy
def useVersioning(self): def useVersioning(self):
if self.globalOptions('useVersioning'): if self.globalOptions('useVersioning'):
@ -495,6 +499,13 @@ class BaseView(GenericView, I18NView):
if options: if options:
return 'useVersioning' in options.value 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 @Lazy
def versionId(self): def versionId(self):
versionable = IVersionable(self.target, None) versionable = IVersionable(self.target, None)

View file

@ -617,7 +617,8 @@ class EditObject(FormController, I18NView):
form = self.request.form form = self.request.form
if form.get('version.create'): if form.get('version.create'):
versionable = IVersionable(obj) 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) version = versionable.createVersion(level)
notify(ObjectCreatedEvent(version)) notify(ObjectCreatedEvent(version))
return version return version

View file

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

View file

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

View file

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

View file

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

View file

@ -29,9 +29,10 @@ from zope.cachedescriptors.property import Lazy
from zope.schema.interfaces import IField from zope.schema.interfaces import IField
from zope.traversing.api import getName, getParent from zope.traversing.api import getName, getParent
from cybertools.meta.interfaces import IOptions
from cybertools.text.mimetypes import extensions from cybertools.text.mimetypes import extensions
from cybertools.typology.interfaces import IType 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.interfaces import IResource, IExternalFile
from loops.versioning.interfaces import IVersionable from loops.versioning.interfaces import IVersionable
@ -67,13 +68,25 @@ class VersionableResource(object):
value = getattr(self.context, attrName, _not_found) value = getattr(self.context, attrName, _not_found)
if value is _not_found: if value is _not_found:
versions = OOBTree() 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) 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 @Lazy
def versionNumbers(self): 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 @Lazy
def variantIds(self): def variantIds(self):