Ejemplo n.º 1
0
def updateMetadata(obj , form , context):
    # vocabs = getToolByName(context , 'portal_vocabularies')
    commonMetadatas = imMetadatas().commonMetadatas
    # if request.form['addorreplace'] == 'Replace metadatas'
    # we cleanup all the fields before to set new values
    if form['addorreplace'] == 'Replace metadatas':
        for k in commonMetadatas:
            # field = nbField(obj,k)
            stringFields = ['recording_date_time','photographer']
            emptyString = ''
            emptyList = []
            if k == 'description':
                obj.setDescription(emptyString)
            elif k in stringFields:
                obj.getField(k).set(obj, emptyString)
            else:
                obj.getField(k).set(obj, emptyList)

    for k in form.keys():
        if k in commonMetadatas:
            if k == 'description':
                obj.setDescription(form[k])
                # import pdb;pdb.set_trace()
            elif k in ['recording_date_time','photographer']:
                # we always replace non vocabulary values                
                obj.getField(k).set(obj, form[k])
            else:
                # field = nbField(obj,k)
                if form['addorreplace'] == 'Add metadatas':
                    # form[k] = values to spread
                    # obj[k] = metadatas values already set to obj
                    lform = list(obj[k])
                    for data in eval(form[k]):
                        if not data in lform:
                            # import pdb;pdb.set_trace()
                            lform.append(data)
                    obj.getField(k).set(obj, lform)
                else:
                    obj.getField(k).set(obj, eval(form[k]))        
    obj.reindexObject()
    return
Ejemplo n.º 2
0
def updateMetadata(obj , form , context):
    vocabs = getToolByName(context , 'portal_vocabularies')
    commonMetadatas = imMetadatas().commonMetadatas
    # import pdb;pdb.set_trace()
    # print '------------------------'
    # print 'in updateMetadata...'
    # print obj.absolute_url()
    # if request.form['addorreplace'] == 'Replace metadatas'
    # we cleanup all the fields before to set new values
    if form['addorreplace'] == 'Replace metadatas':
        for k in commonMetadatas:
            field = nbField(obj,k)
            stringFields = ['recording_date_time','photographer']
            emptyString = ''
            emptyList = []
            # import pdb;pdb.set_trace()
            if k == 'description':
                obj.setDescription(emptyString)
            elif k in stringFields:
                if obj.portal_type == 'Image':
                    #ImageImageRepositoryExtender(obj).fields[field].set(obj,emptyString)
                    obj.getField(k).set(obj, emptyString)
                else:
                    FolderImageRepositoryExtender(obj).fields[field].set(obj,emptyString)
            else:
                if obj.portal_type == 'Image':
                    ImageImageRepositoryExtender(obj).fields[field].set(obj,emptyList)
                else:
                    FolderImageRepositoryExtender(obj).fields[field].set(obj,emptyList)
    #                         
    for k in form.keys():
        if k in commonMetadatas:
            if k == 'description':
                obj.setDescription(form[k])
                # import pdb;pdb.set_trace()
            elif k in ['recording_date_time','photographer']:
                # we always replace non vocabulary values
                field = nbField(obj,k)
                if obj.portal_type == 'Image':
                    ImageImageRepositoryExtender(obj).fields[field].set(obj,form[k])
                else:
                    FolderImageRepositoryExtender(obj).fields[field].set(obj,form[k])
                # import pdb;pdb.set_trace()
            else:
                field = nbField(obj,k)
                if form['addorreplace'] == 'Add metadatas':
                    # form[k] = values to spread
                    # obj[k] = metadatas values already set to obj
                    lform = list(obj[k])
                    for data in eval(form[k]):
                        if not data in lform:
                            # import pdb;pdb.set_trace()
                            lform.append(data)
                    if obj.portal_type == 'Image':
                        ImageImageRepositoryExtender(obj).fields[field].set(obj,lform)
                    else:
                        FolderImageRepositoryExtender(obj).fields[field].set(obj,lform)                    
                else:
                    if obj.portal_type == 'Image':
                        ImageImageRepositoryExtender(obj).fields[field].set(obj,eval(form[k]))
                    else:
                        FolderImageRepositoryExtender(obj).fields[field].set(obj,eval(form[k]))                    
                    
            # print '...' + k + ':' + form[k] + ':::' + str(obj[k])                 
        
    # print '------------------------'
    obj.reindexObject()
    return