WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit 2d7d378

Browse files
committed
Optimized upgrade step 2107
1 parent f62dfc9 commit 2d7d378

File tree

1 file changed

+20
-21
lines changed

1 file changed

+20
-21
lines changed

src/collective/iconifiedcategory/upgrades.py

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -216,29 +216,28 @@ def upgrade_to_2106(context):
216216

217217
def upgrade_to_2107(context):
218218
''' '''
219-
portal_types = _portal_types_using_behavior()
220219
catalog = api.portal.get_tool('portal_catalog')
221-
brains = catalog(portal_type=portal_types)
222220

223-
logger.info('Querying elements to update among "{0}" objects of portal_type "{1}"'.format(
224-
len(brains), ', '.join(portal_types)))
225-
parents_to_update = []
221+
brains = catalog(
222+
object_provides='collective.iconifiedcategory.'
223+
'behaviors.iconifiedcategorization.IIconifiedCategorizationMarker')
224+
i = 0
225+
pghandler = ZLogHandler(steps=1000)
226+
pghandler.info('Initializing "approved/to_approve" for every categorized elements...')
227+
pghandler.init('InitFileContentTypeForCategorizedElements', len(brains))
228+
226229
for brain in brains:
230+
i += 1
231+
pghandler.report(i)
227232
obj = brain.getObject()
228-
if not(base_hasattr(obj, 'to_approve')):
229-
setattr(obj, 'to_approve', False)
230-
if not(base_hasattr(obj, 'approved')):
231-
setattr(obj, 'approved', False)
232-
233+
obj_uid = obj.UID()
233234
parent = obj.aq_parent
234-
if parent not in parents_to_update:
235-
parents_to_update.append(parent)
236-
237-
# finally update parents that contains categorized elements
238-
nb_of_parents_to_update = len(parents_to_update)
239-
i = 1
240-
for parent_to_update in parents_to_update:
241-
logger.info('Running update_all_categorized_elements for element {0}/{1} ({2})'.format(
242-
i, nb_of_parents_to_update, '/'.join(parent_to_update.getPhysicalPath())))
243-
i = i + 1
244-
update_all_categorized_elements(parent_to_update)
235+
if 'to_approve' not in parent.categorized_elements[obj_uid]:
236+
obj.to_approve = False
237+
parent.categorized_elements[obj_uid]['to_approve'] = False
238+
parent._p_changed = True
239+
if 'approved' not in parent.categorized_elements[obj_uid]:
240+
obj.approved = False
241+
parent.categorized_elements[obj_uid]['approved'] = False
242+
parent._p_changed = True
243+
pghandler.finish()

0 commit comments

Comments
 (0)