Skip to content

Instantly share code, notes, and snippets.

@hvelarde
Created June 21, 2018 23:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hvelarde/2dcaf926cc8c305d492c5c616d586d8b to your computer and use it in GitHub Desktop.
Save hvelarde/2dcaf926cc8c305d492c5c616d586d8b to your computer and use it in GitHub Desktop.
Normalize catalog keywords
# -*- 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