rendered paste bodyclass PIMTranslator(eim.Translator):
URI = "cid:pim-translator@osaf.us"
version = 1
description = u"Translator for Chandler PIM items"
handled_fields = ('displayName', 'triageStatus',
'triageStatusChanged', 'createdOn')
# ItemRecord -------------
# TODO: lastModifiedBy
@model.ItemRecord.importer
def import_item(self, record):
if COSMO_MODE:
self.loadItemByUUID(
record.uuid,
pim.ContentItem,
displayName=record.title,
) # incomplete
return
else:
kwds = import_fields(record, self.handled_fields)
self.loadItemByUUID(record.uuid, pim.ContentItem, **kwds)# incomplete
@import_mapper('createdOn')
def import_createdOn(val):
# createdOn is a Decimal we need to change to datetime
naive = datetime.utcfromtimestamp(float(val))
inUTC = naive.replace(tzinfo=utc)
# Convert to user's tz:
return inUTC.astimezone(ICUtzinfo.default)
@import_mapper('triageStatus')
def import_triageStatus(val):
return getattr(pim.TriageEnum, val)
@import_mapper('triageStatusChanged')
def import_triageStatusChanged(val):
return float(val)
@import_mapper('displayName', False)
def import_displayName(record):
return record.title
@eim.exporter(pim.ContentItem)
def export_item(self, item):
utc = ICUtzinfo.getInstance('UTC')
yield model.ItemRecord(
item.itsUUID, # uuid
item.displayName, # title
str(item.triageStatus), # triageStatus
Decimal("%.2f" % item.triageStatusChanged), # t_s_changed
None, # lastModifiedBy
Decimal(int(time.mktime(item.createdOn.timetuple()))) # createdOn
)