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:
parent
499f86848b
commit
b55a2f8952
7 changed files with 47 additions and 8 deletions
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -29,6 +29,10 @@ configuration):
|
|||
>>> len(concepts) + len(resources)
|
||||
18
|
||||
|
||||
>>> loopsRoot = site['loops']
|
||||
>>> #loopsRoot.options = ['useVersioning:rev']
|
||||
>>> loopsRoot.options = ['useVersioning']
|
||||
|
||||
|
||||
External Collections
|
||||
====================
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Add table
Reference in a new issue