diff --git a/src/recensio/plone/adapter/indexer.py b/src/recensio/plone/adapter/indexer.py
index 00b40ff..2714274 100644
--- a/src/recensio/plone/adapter/indexer.py
+++ b/src/recensio/plone/adapter/indexer.py
@@ -1,7 +1,6 @@
from plone.indexer.decorator import indexer
+from recensio.plone.behaviors.base import DDCVocabulary
from recensio.plone.interfaces import IReview
-from zope.component import getUtility
-from zope.schema.interfaces import IVocabularyFactory
@indexer(IReview)
@@ -20,24 +19,22 @@ def authorsUID(obj):
return uids
-def get_self_and_parents(value, vocab_name):
- vocab = getUtility(IVocabularyFactory, vocab_name)(None)
+def get_self_and_parents(obj, name):
+ vocab = DDCVocabulary(name)(obj)
values = set()
- for term in value:
+ for term in getattr(obj, name):
values.update(vocab.getTermPath(term))
return list(values)
@indexer(IReview)
def ddcTime(obj):
- return get_self_and_parents(obj.ddcTime, "recensio.plone.vocabularies.epoch_values")
+ return get_self_and_parents(obj, "ddcTime")
@indexer(IReview)
def ddcPlace(obj):
- return get_self_and_parents(
- obj.ddcPlace, "recensio.plone.vocabularies.region_values"
- )
+ return get_self_and_parents(obj, "ddcPlace")
@indexer(IReview)
diff --git a/src/recensio/plone/behaviors/base.py b/src/recensio/plone/behaviors/base.py
index 3410523..d0401ea 100644
--- a/src/recensio/plone/behaviors/base.py
+++ b/src/recensio/plone/behaviors/base.py
@@ -20,7 +20,9 @@
from zope.component import adapter
from zope.i18n import translate
from zope.i18nmessageid import Message
+from zope.interface import implementer
from zope.interface import provider
+from zope.schema.interfaces import IContextSourceBinder
# TODO, maybe:
@@ -37,6 +39,16 @@
# this is still used in presentations. #3103
+@implementer(IContextSourceBinder)
+class DDCVocabulary:
+ def __init__(self, name):
+ self.name = name
+
+ def __call__(self, context):
+ helper = api.content.get_view(context=context, name="vocabulary-helper")
+ return getattr(helper, self.name)
+
+
@provider(IFormFieldProvider)
class IBase(model.Schema):
directives.widget(
@@ -118,7 +130,7 @@ class IBase(model.Schema):
# size=10,
ddcSubject = schema.List(
title=_("ddc subject"),
- value_type=schema.Choice(vocabulary="recensio.plone.vocabularies.topic_values"),
+ value_type=schema.Choice(source=DDCVocabulary("ddcSubject")),
required=False,
defaultFactory=list,
)
@@ -127,7 +139,7 @@ class IBase(model.Schema):
# size=10,
ddcTime = schema.List(
title=_("ddc time"),
- value_type=schema.Choice(vocabulary="recensio.plone.vocabularies.epoch_values"),
+ value_type=schema.Choice(source=DDCVocabulary("ddcTime")),
required=False,
defaultFactory=list,
)
@@ -136,9 +148,7 @@ class IBase(model.Schema):
# size=10,
ddcPlace = schema.List(
title=_("ddc place"),
- value_type=schema.Choice(
- vocabulary="recensio.plone.vocabularies.region_values",
- ),
+ value_type=schema.Choice(source=DDCVocabulary("ddcPlace")),
required=False,
defaultFactory=list,
)
diff --git a/src/recensio/plone/browser/configure.zcml b/src/recensio/plone/browser/configure.zcml
index 7886fc9..a30a8c4 100644
--- a/src/recensio/plone/browser/configure.zcml
+++ b/src/recensio/plone/browser/configure.zcml
@@ -59,6 +59,14 @@
layer="recensio.plone.interfaces.IRecensioPloneLayer"
/>
+
+
Germany
Allemagne
-
- 42.5.0
-
- Berlin
- Berlin
- Berlin
-
-
-
- 42.5.1
-
- Brandenburg
- Brandenburg
- Brandenburg
-
-
-
- 42.5.2
-
- Baden-Württemberg
- Baden-Württemberg
- Baden-Württemberg
-
-
-
- 42.5.3
-
- Bayern
- Bavaria
- Bayern
-
-
-
- 42.5.4
-
- Bremen
- Bremen
- Bremen
-
-
-
- 42.5.5
-
- Hessen
- Hesse
- Hessen
-
-
-
- 42.5.6
-
- Hamburg
- Hamburg
- Hamburg
-
-
-
- 42.5.7
-
- Mecklenburg-Vorpommern
- Mecklenburg-West Pomerania
- Mecklenburg-Vorpommern
-
-
-
- 42.5.8
-
- Niedersachsen
- Lower Saxony
- Niedersachsen
-
-
-
- 42.5.9
-
- Nordrhein-Westfalen
- North Rhine-Westphalia
- Nordrhein-Westfalen
-
-
-
- 42.5.10
-
- Rheinland-Pfalz
- Rhineland-Palatinate
- Rheinland-Pfalz
-
-
-
- 42.5.11
-
- Schleswig-Holstein
- Schleswig-Holstein
- Schleswig-Holstein
-
-
-
- 42.5.12
-
- Saarland
- Saarland
- Saarland
-
-
-
- 42.5.13
-
- Sachsen
- Saxony
- Sachsen
-
-
-
- 42.5.14
-
- Sachsen-Anhalt
- Saxony-Anhalt
- Sachsen-Anhalt
-
-
-
- 42.5.15
-
- Thüringen
- Thuringia
- Thüringen
-
-
42.6
diff --git a/src/recensio/plone/vocabularies/vdex/ddc_sach.vdex b/src/recensio/plone/vocabularies/vdex/ddc_sach.vdex
index a427a59..9baa24b 100644
--- a/src/recensio/plone/vocabularies/vdex/ddc_sach.vdex
+++ b/src/recensio/plone/vocabularies/vdex/ddc_sach.vdex
@@ -357,62 +357,4 @@
-
- 1001
-
- Ägyptologie
- Egyptology
-
-
-
-
- 1002
-
- Alte Geschichte
- Ancient History
-
-
-
-
- 1003
-
- Byzantinistik
- Byzantine Studies
-
-
-
-
- 1004
-
- Klassische Archäologie
- Classical Archaeology
-
-
-
-
- 1005
-
- Klassische Philologie
- Classical Philology
-
-
-
-
- 1006
-
- Mittel- und Neulateinische Philologie
- Medieval and Neo-Latin Philology
-
-
-
-
- 1007
-
- Vor- und Frühgeschichte
- Pre- and Early History
-
-
-
-
-