Created
June 21, 2018 23:20
-
-
Save hvelarde/2dcaf926cc8c305d492c5c616d586d8b to your computer and use it in GitHub Desktop.
Normalize catalog keywords
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
from plone import api | |
import transaction | |
def normalize(): | |
"""Remove spare spaces and transform keywords to lowercase.""" | |
catalog = api.portal.get_tool('portal_catalog') | |
results = catalog() | |
n = 0 | |
for i, b in enumerate(results, 1): | |
try: | |
obj = b.getObject() | |
except (AttributeError, KeyError): | |
continue # skip broken objects | |
keywords = list(obj.Subject()) | |
# remove spare spaces | |
normalized = [' '.join(k.split()) for k in keywords if k] | |
# transform to lower case | |
lowercase = [k.lower() for k in normalized] | |
if keywords == lowercase: | |
continue # no changes on object | |
obj.setSubject(tuple(lowercase)) | |
catalog.catalog_object(obj, idxs=['Subject'], update_metadata=False) | |
n += 1 | |
if n % 1000 == 0: | |
transaction.savepoint() | |
transaction.commit() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment