122 def transform(dt, utcOffset, propertyString, urlString, logger=None):
126 if not isinstance(dt, datetime.datetime):
127 raise Exception(PDateTimezonesHandler.ERROR_BAD_PARAMETER +
" 'Datatime'")
129 if (
not isinstance(propertyString, str)
and not isinstance(propertyString, unicode))
or not propertyString:
130 raise Exception(PDateTimezonesHandler.ERROR_BAD_PARAMETER +
" 'propertyString'")
132 if (
not isinstance(urlString, str)
and not isinstance(urlString, unicode))
or not urlString:
133 raise Exception(PDateTimezonesHandler.ERROR_BAD_PARAMETER +
" 'urlString'")
136 properties = PDateTimezonesHandler.loadProperties(propertyString, logger)
138 for elem
in properties:
139 match = re.search(elem.pattern, urlString)
141 if logger
is not None:
142 logger.debug(PDateTimezonesHandler.USE_PATTERN +
": '" + str(elem.pattern) +
"'")
144 transformHandlers = {\
145 PDateTimezonesHandler.TRANSFORMATION_ALWAYS:\
146 PDateTimezonesHandler.transformationHandlerAlways, \
147 PDateTimezonesHandler.TRANSFORMATION_TIMEZONE_DEFINED:\
148 PDateTimezonesHandler.transformationHandlerTimezoneDefined, \
149 PDateTimezonesHandler.TRANSFORMATION_NO_TIMEZONE_DEFINED:\
150 PDateTimezonesHandler.transformationHandlerNoTimezoneDefined, \
151 PDateTimezonesHandler.TRANSFORMATION_TIMEZONE_EQUAL:\
152 PDateTimezonesHandler.transformationHandlerTimezoneEqual, \
153 PDateTimezonesHandler.TRANSFORMATION_TIMEZONE_NOT_EQUAL:\
154 PDateTimezonesHandler.transformationHandlerTimezoneNotEqual}
156 if int(elem.condition) < len(transformHandlers)
and int(elem.condition) >= 0:
158 if elem.zoneFrom
is None:
159 elem.zoneFrom = DateTimeType.getTimezone(dt)
160 elif elem.zoneFrom == PDateTimezonesHandler.VALUE_ZONE_FROM_LOCAL:
161 elem.zoneFrom = PDateTimezonesHandler.getLocalOffset()
163 logger.debug(
'>>>>> d.isoformat: ' + str(dt.isoformat(
' ')))
164 logger.debug(
'>>>>> elem.zoneFrom: ' + str(elem.zoneFrom))
165 logger.debug(
'>>>>> elem.zoneTo: ' + str(elem.zoneTo))
166 logger.debug(
'>>>>> elem.condition = ' + str(elem.condition))
169 ret = transformHandlers[int(elem.condition)](dt, utcOffset, elem.zoneTo, elem.zoneFrom, logger)
171 if logger
is not None:
172 logger.debug(PDateTimezonesHandler.ERROR_WRONG_CONDITION +
': ' + str(elem.condition))
174 except Exception, err:
175 if logger
is not None:
176 logger.error(str(err))
178 logger.debug(
"!!! ret: %s", str(ret))