Changeset 1031

Show
Ignore:
Timestamp:
12/25/07 03:36:04
Author:
mylan
Message:

Fix loosing Linkintegrity references with imported objects.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • qPloneSkinDump/branches/plone_3.0/skin_template/fixes.py

    r1025 r1031  
    11from Products.CMFCore.utils import getToolByName 
    22from Products.ZCatalog.ProgressHandler import ZLogHandler 
     3from plone.app.linkintegrity.handlers import referencedRelationship as li_relation 
    34 
    45portal_catalog = None 
    56portal_repository = None 
     7uid_catalog = None 
     8reference_catalog = None 
    69 
    710def fix_archivest(ob): 
     
    1518    ob.reindexObject() 
    1619 
     20def fix_linkintegrity(ob): 
     21    """Fix losed references.""" 
     22    ob_li_refs = reference_catalog.getReferences(ob, relationship=li_relation) 
     23    if ob_li_refs: 
     24        annotations = ob._getReferenceAnnotations() 
     25        uniqueUIDs = uid_catalog.uniqueValuesFor('UID') 
     26        # delete references to non-existent objects 
     27        [annotations._delObject(ref.id) for ref in ob_li_refs \ 
     28         if not ref.targetUID in uniqueUIDs] 
     29         
    1730def fix_all(ob): 
    1831    """ Recursive function for perform registered 
     
    2437        [fix_all(o) for o in ob.objectValues()] 
    2538 
    26 perobject_actions = [fix_archivest, fix_catalog
     39perobject_actions = [fix_archivest, fix_catalog, fix_linkintegrity
    2740 
    2841def fix(context): 
     
    3043        imported objects - absence in catalogs, some other issues''' 
    3144    global portal_repository, portal_catalog 
     45    global uid_catalog, reference_catalog 
    3246    portal_catalog = getToolByName(context,'portal_catalog') 
    3347    portal_repository = getToolByName(context,'portal_repository') 
     48    uid_catalog = getToolByName(context,'uid_catalog') 
     49    reference_catalog = getToolByName(context,'reference_catalog') 
    3450 
    3551    fix_all(context) 
     52