98 def evaluateElement(dbWrapper, logger, obj, fieldsDict, objPropertyStruct):
99 logger.debug(
'evaluateElement enter.... \nobj: ' +
varDump(obj) +
'\nfieldsDict: ' + str(fieldsDict) + \
100 '\nobjPropertyStruct: ' + str(objPropertyStruct))
105 for key, value
in obj.__dict__.items():
106 if isinstance(value, basestring):
108 objFields[key.upper()] = dbWrapper.dbTask.dbConnections[DB_CONSTS.PRIMARY_DB_ID].escape_string(str(value))
110 objFields[key.upper()] = value
112 logger.debug(
'objFields: %s', str(objFields))
114 for fieldName, fieldValue
in objPropertyStruct.items():
115 logger.debug(
'fieldName: %s, fieldValue: %s', str(fieldName), str(fieldValue))
116 for sqlExpression, valueType
in fieldValue.items():
117 logger.debug(
'sqlExpression: %s, valueType: %s', str(sqlExpression), str(valueType))
118 sqlQuery =
'SELECT ' + \
119 FieldsSQLExpressionEvaluator.macroReplace(sqlExpression, objFields,
120 FieldsSQLExpressionEvaluator.REPLACE_MARKER,
122 logger.debug(
"sqlQuery: " + str(sqlQuery))
123 affectDB = dbWrapper.affect_db
124 dbWrapper.affect_db =
True 125 customResponse =
None 127 customResponse = dbWrapper.customRequest(sqlQuery, FieldsSQLExpressionEvaluator.DB_NAME)
128 except DatabaseException, err:
129 logger.error(
"Bad query: " + str(sqlQuery))
131 dbWrapper.affect_db = affectDB
132 logger.debug(
"customResponse: " + str(customResponse))
133 if customResponse
is not None and len(customResponse) > 0
and len(customResponse[0]) > 0:
136 if valueType == FieldsSQLExpressionEvaluator.CAST_TYPE_TO_INTEGER:
137 result = int(customResponse[0][0])
138 elif valueType == FieldsSQLExpressionEvaluator.CAST_TYPE_TO_STRING:
139 result = str(customResponse[0][0])
140 elif valueType == FieldsSQLExpressionEvaluator.CAST_TYPE_TO_DATETIME:
141 dt = DateTimeType.parse(customResponse[0][0])
143 result = dt.strftime(
"%Y-%m-%d %H:%M:%S")
145 logger.debug(
'Unknown type for cast: ' + str(valueType))
147 except Exception, err:
148 logger.error(
"Customization result by type failed, error: %s", str(err))
150 logger.debug(
'result after cast: ' + str(result) +
' type: ' + str(
type(result)))
152 if result
is not None:
153 for fieldObjName, fieldDBName
in fieldsDict.items():
154 if fieldDBName == fieldName
and hasattr(obj, fieldObjName):
155 logger.debug(
"Found attribute '" + str(fieldObjName) +
"' in object...")
156 ret[fieldObjName] = result
def varDump(obj, stringify=True, strTypeMaxLen=256, strTypeCutSuffix='...', stringifyType=1, ignoreErrors=False, objectsHash=None, depth=0, indent=2, ensure_ascii=False, maxDepth=10)