WEB开发网
开发学院软件开发Python 一个用于 Python 的 CMIS API 库,第 2 部分: 使用... 阅读

一个用于 Python 的 CMIS API 库,第 2 部分: 使用 Python 和 cmislib 构建真正的 ECM 工具

 2010-05-05 00:00:00 来源:WEB开发网   
核心提示: 步骤 6. 到目标文档的动态元数据映射如 清单 7 所示,本文的最后一个方法用于处理动态元数据映射:从 Exif 数据中的属性映射到为目标文档类定义的属性,一个用于 Python 的 CMIS API 库,第 2 部分: 使用 Python 和 cmislib 构建真正的 ECM 工具(10),

步骤 6. 到目标文档的动态元数据映射

如 清单 7 所示,本文的最后一个方法用于处理动态元数据映射:从 Exif 数据中的属性映射到为目标文档类定义的属性。这个方法是 addPropetyOfThecorrectTypeToPropbag();我想说的是,我喜欢这种具有描述性的函数名称。这个方法将完成整个脚本中最复杂的工作,但是如您所见,它非常简单,这要归功于 cmislib 的作用。例如,如果 valueToAdd(在来自 exif-py 时总是一个字符串)包含值 56 且 typeObj 属性类型是 int,那么您将它转换为一个适当的 int 对象并设置这个值。如果目标存储库认为它应该是一个字符串,那么就不用转换它。如果转换没有效果(比如这个值包含 f2.0),那么转换将失败并跳过这个属性,但文档仍将创建。因此,不管您在目标 CMIS 存储库中如何设置属性定义,这个代码将尝试使其有效。

清单 7. addPropertyOfTheCorrectTypeToPropbag 方法

def addPropertyOfTheCorrectTypeToPropbag(targetProps, typeObj, valueToAdd): 
  """ 
  Determine what type 'typeObj' is, then convert 'valueToAdd' 
  to that type and set it in targetProps if the property is updateable. 
  Currently only supports 3 types: string, integer and datetime 
  """ 
  cmisUpdateability = typeObj.getUpdatability() 
  cmisPropType = typeObj.getPropertyType() 
  cmisId = typeObj.id 
  if (cmisUpdateability == "readwrite"):  
    # first lets handle string types 
    if (cmisPropType == 'string'): 
      # this will be easy 
      targetProps[cmisId] = valueToAdd 
    if (cmisPropType == 'integer'): 
      try: 
        intValue = int(valueToAdd.values[0]) 
        targetProps[cmisId] = intValue 
      except: print "error converting int property id:" + cmisId 
    if (cmisPropType == 'datetime'): 
      try: 
        dateValue = valueToAdd.values 
        dtVal = datetime.datetime.strptime(dateValue , 
             "%Y:%m:%d %H:%M:%S") 
 
        targetProps[cmisId] = dtVal 
      except: print "error converting datetime property id:" \ 
         + cmisId 

上一页  5 6 7 8 9 10 

Tags:一个 用于 Python

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接