@@ -48,9 +48,9 @@ def upgrade_to_2100(context):
4848 for brain in brains :
4949 obj = brain .getObject ()
5050 # this can be useless if using behavior 'Scan metadata' collective.dms.scanbehavior
51- if not (base_hasattr (obj , 'to_sign' )):
51+ if not (base_hasattr (obj , 'to_sign' )):
5252 setattr (obj , 'to_sign' , False )
53- if not (base_hasattr (obj , 'signed' )):
53+ if not (base_hasattr (obj , 'signed' )):
5454 setattr (obj , 'signed' , False )
5555
5656 parent = obj .aq_parent
@@ -80,7 +80,7 @@ def upgrade_to_2101(context):
8080 parents_to_update = []
8181 for brain in brains :
8282 obj = brain .getObject ()
83- if not (base_hasattr (obj , 'publishable' )):
83+ if not (base_hasattr (obj , 'publishable' )):
8484 setattr (obj , 'publishable' , False )
8585
8686 parent = obj .aq_parent
@@ -216,29 +216,27 @@ def upgrade_to_2106(context):
216216
217217def 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+ obj .approved = False
239+ parent .categorized_elements [obj_uid ]['approved' ] = False
240+ parent .categorized_elements [obj_uid ]['approved_activated' ] = False
241+ parent ._p_changed = True
242+ pghandler .finish ()
0 commit comments