Skip to content

Commit

Permalink
Allow customizing ddc vocabularies (and revert additions from daughters)
Browse files Browse the repository at this point in the history
  • Loading branch information
reinhardt committed Apr 25, 2024
1 parent 42956ed commit 58038c7
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 200 deletions.
15 changes: 6 additions & 9 deletions src/recensio/plone/adapter/indexer.py
Original file line number Diff line number Diff line change
@@ -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)
Expand All @@ -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)
Expand Down
20 changes: 15 additions & 5 deletions src/recensio/plone/behaviors/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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(
Expand Down Expand Up @@ -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,
)
Expand All @@ -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,
)
Expand All @@ -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,
)
Expand Down
8 changes: 8 additions & 0 deletions src/recensio/plone/browser/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,14 @@
layer="recensio.plone.interfaces.IRecensioPloneLayer"
/>

<browser:page
name="vocabulary-helper"
for="*"
class=".helper.VocabularyHelper"
permission="zope2.View"
layer="recensio.plone.interfaces.IRecensioPloneLayer"
/>

<browser:page
name="homepage-view"
for="plone.app.contenttypes.interfaces.IDocument"
Expand Down
19 changes: 19 additions & 0 deletions src/recensio/plone/browser/helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from zope.component.hooks import setSite
from zope.interface import implementer
from zope.interface import Interface
from zope.schema.interfaces import IVocabularyFactory
from ZTUtils import make_query

import logging
Expand Down Expand Up @@ -179,3 +180,21 @@ def get_subtree(self, value):
"""
subtree = value[1][1] or {}
return subtree.items()


class VocabularyHelper(BrowserView):
def get_named_vocabulary(self, name):
factory = getUtility(IVocabularyFactory, name)
return factory(self.context)

@property
def ddcSubject(self):
return self.get_named_vocabulary("recensio.plone.vocabularies.topic_values")

@property
def ddcTime(self):
return self.get_named_vocabulary("recensio.plone.vocabularies.epoch_values")

@property
def ddcPlace(self):
return self.get_named_vocabulary("recensio.plone.vocabularies.region_values")
128 changes: 0 additions & 128 deletions src/recensio/plone/vocabularies/vdex/ddc_geo.vdex
Original file line number Diff line number Diff line change
Expand Up @@ -154,134 +154,6 @@
<langstring language="en">Germany</langstring>
<langstring language="fr">Allemagne</langstring>
</caption>
<term>
<termIdentifier>42.5.0</termIdentifier>
<caption>
<langstring language="de">Berlin</langstring>
<langstring language="en">Berlin</langstring>
<langstring language="fr">Berlin</langstring>
</caption>
</term>
<term>
<termIdentifier>42.5.1</termIdentifier>
<caption>
<langstring language="de">Brandenburg</langstring>
<langstring language="en">Brandenburg</langstring>
<langstring language="fr">Brandenburg</langstring>
</caption>
</term>
<term>
<termIdentifier>42.5.2</termIdentifier>
<caption>
<langstring language="de">Baden-Württemberg</langstring>
<langstring language="en">Baden-Württemberg</langstring>
<langstring language="fr">Baden-Württemberg</langstring>
</caption>
</term>
<term>
<termIdentifier>42.5.3</termIdentifier>
<caption>
<langstring language="de">Bayern</langstring>
<langstring language="en">Bavaria</langstring>
<langstring language="fr">Bayern</langstring>
</caption>
</term>
<term>
<termIdentifier>42.5.4</termIdentifier>
<caption>
<langstring language="de">Bremen</langstring>
<langstring language="en">Bremen</langstring>
<langstring language="fr">Bremen</langstring>
</caption>
</term>
<term>
<termIdentifier>42.5.5</termIdentifier>
<caption>
<langstring language="de">Hessen</langstring>
<langstring language="en">Hesse</langstring>
<langstring language="fr">Hessen</langstring>
</caption>
</term>
<term>
<termIdentifier>42.5.6</termIdentifier>
<caption>
<langstring language="de">Hamburg</langstring>
<langstring language="en">Hamburg</langstring>
<langstring language="fr">Hamburg</langstring>
</caption>
</term>
<term>
<termIdentifier>42.5.7</termIdentifier>
<caption>
<langstring language="de">Mecklenburg-Vorpommern</langstring>
<langstring language="en">Mecklenburg-West Pomerania</langstring>
<langstring language="fr">Mecklenburg-Vorpommern</langstring>
</caption>
</term>
<term>
<termIdentifier>42.5.8</termIdentifier>
<caption>
<langstring language="de">Niedersachsen</langstring>
<langstring language="en">Lower Saxony</langstring>
<langstring language="fr">Niedersachsen</langstring>
</caption>
</term>
<term>
<termIdentifier>42.5.9</termIdentifier>
<caption>
<langstring language="de">Nordrhein-Westfalen</langstring>
<langstring language="en">North Rhine-Westphalia</langstring>
<langstring language="fr">Nordrhein-Westfalen</langstring>
</caption>
</term>
<term>
<termIdentifier>42.5.10</termIdentifier>
<caption>
<langstring language="de">Rheinland-Pfalz</langstring>
<langstring language="en">Rhineland-Palatinate</langstring>
<langstring language="fr">Rheinland-Pfalz</langstring>
</caption>
</term>
<term>
<termIdentifier>42.5.11</termIdentifier>
<caption>
<langstring language="de">Schleswig-Holstein</langstring>
<langstring language="en">Schleswig-Holstein</langstring>
<langstring language="fr">Schleswig-Holstein</langstring>
</caption>
</term>
<term>
<termIdentifier>42.5.12</termIdentifier>
<caption>
<langstring language="de">Saarland</langstring>
<langstring language="en">Saarland</langstring>
<langstring language="fr">Saarland</langstring>
</caption>
</term>
<term>
<termIdentifier>42.5.13</termIdentifier>
<caption>
<langstring language="de">Sachsen</langstring>
<langstring language="en">Saxony</langstring>
<langstring language="fr">Sachsen</langstring>
</caption>
</term>
<term>
<termIdentifier>42.5.14</termIdentifier>
<caption>
<langstring language="de">Sachsen-Anhalt</langstring>
<langstring language="en">Saxony-Anhalt</langstring>
<langstring language="fr">Sachsen-Anhalt</langstring>
</caption>
</term>
<term>
<termIdentifier>42.5.15</termIdentifier>
<caption>
<langstring language="de">Thüringen</langstring>
<langstring language="en">Thuringia</langstring>
<langstring language="fr">Thüringen</langstring>
</caption>
</term>
</term>
<term>
<termIdentifier>42.6</termIdentifier>
Expand Down
58 changes: 0 additions & 58 deletions src/recensio/plone/vocabularies/vdex/ddc_sach.vdex
Original file line number Diff line number Diff line change
Expand Up @@ -357,62 +357,4 @@
</caption>
</term>

<term>
<termIdentifier>1001</termIdentifier>
<caption>
<langstring language="de">Ägyptologie</langstring>
<langstring language="en">Egyptology</langstring>
</caption>

</term>
<term>
<termIdentifier>1002</termIdentifier>
<caption>
<langstring language="de">Alte Geschichte</langstring>
<langstring language="en">Ancient History</langstring>
</caption>

</term>
<term>
<termIdentifier>1003</termIdentifier>
<caption>
<langstring language="de">Byzantinistik</langstring>
<langstring language="en">Byzantine Studies</langstring>
</caption>

</term>
<term>
<termIdentifier>1004</termIdentifier>
<caption>
<langstring language="de">Klassische Archäologie</langstring>
<langstring language="en">Classical Archaeology</langstring>
</caption>

</term>
<term>
<termIdentifier>1005</termIdentifier>
<caption>
<langstring language="de">Klassische Philologie</langstring>
<langstring language="en">Classical Philology</langstring>
</caption>

</term>
<term>
<termIdentifier>1006</termIdentifier>
<caption>
<langstring language="de">Mittel- und Neulateinische Philologie</langstring>
<langstring language="en">Medieval and Neo-Latin Philology</langstring>
</caption>

</term>
<term>
<termIdentifier>1007</termIdentifier>
<caption>
<langstring language="de">Vor- und Frühgeschichte</langstring>
<langstring language="en">Pre- and Early History</langstring>
</caption>

</term>


</vdex>

0 comments on commit 58038c7

Please sign in to comment.