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 - - - - -