Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow customizing ddc vocabularies (and revert additions from daughters) #171

Merged
merged 1 commit into from
Apr 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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>
Loading