def migrate_schema_fields(self): old_start = self.old.getField('startDate').get(self.old) old_end = self.old.getField('endDate').get(self.old) old_location = self.old.getField('location').get(self.old) old_attendees = self.old.getField('attendees').get(self.old) old_eventurl = self.old.getField('eventUrl').get(self.old) old_contactname = self.old.getField('contactName').get(self.old) old_contactemail = self.old.getField('contactEmail').get(self.old) old_contactphone = self.old.getField('contactPhone').get(self.old) old_text_field = self.old.getField('text') raw_text = safe_unicode(old_text_field.getRaw(self.old)) mime_type = old_text_field.getContentType(self.old) if raw_text.strip() == '': raw_text = '' old_richtext = RichTextValue(raw=raw_text, mimeType=mime_type, outputMimeType='text/x-html-safe') wholeDay = None if self.old.getField('wholeDay'): wholeDay = self.old.getField('wholeDay').get(self.old) openEnd = None if self.old.getField('openEnd'): openEnd = self.old.getField('openEnd').get(self.old) recurrence = None if self.old.getField('recurrence'): recurrence = self.old.getField('recurrence').get(self.old) if self.old.getField('timezone'): old_timezone = self.old.getField('timezone').get(self.old) else: old_timezone = default_timezone(fallback='UTC') # IEventBasic self.new.start = datetime_fixer(old_start.asdatetime(), old_timezone) self.new.end = datetime_fixer(old_end.asdatetime(), old_timezone) if wholeDay is not None: self.new.whole_day = wholeDay # IEventBasic if openEnd is not None: self.new.open_end = openEnd # IEventBasic if recurrence is not None: self.new.recurrence = recurrence # IEventRecurrence self.new.location = old_location # IEventLocation self.new.attendees = old_attendees # IEventAttendees self.new.event_url = old_eventurl # IEventContact self.new.contact_name = old_contactname # IEventContact self.new.contact_email = old_contactemail # IEventContact self.new.contact_phone = old_contactphone # IEventContact # Copy the entire richtext object, not just it's representation self.new.text = old_richtext
def migrate_schema_fields(self): self.new.start = datetime_fixer(self.old.start, self.old.timezone) self.new.end = datetime_fixer(self.old.end, self.old.timezone) self.new.whole_day = self.old.whole_day self.new.open_end = self.old.open_end self.new.recurrence = self.old.recurrence self.new.location = self.old.location self.new.attendees = self.old.attendees self.new.event_url = self.old.event_url self.new.contact_name = self.old.contact_name self.new.contact_email = self.old.contact_email self.new.contact_phone = self.old.contact_phone # The old behavior for the rich text field does not exist an more. # Look up the old value directly from the Annotation storage # Copy the entire richtext object, not just it's representation annotations = IAnnotations(self.old) old_text = annotations.get( 'plone.app.event.dx.behaviors.IEventSummary.text', None) self.new.text = old_text
def migrate_datetimefield(src_obj, dst_obj, src_fieldname, dst_fieldname): """Migrate a datefield.""" old_value = src_obj.getField(src_fieldname).get(src_obj) if old_value == '': return if src_obj.getField('timezone', None) is not None: old_timezone = src_obj.getField('timezone').get(src_obj) else: old_timezone = default_timezone(fallback='UTC') new_value = datetime_fixer(old_value.asdatetime(), old_timezone) setattr(dst_obj, dst_fieldname, new_value)
def migrate_schema_fields(self): timezone = str(self.old.start_date.tzinfo) \ if self.old.start_date.tzinfo \ else default_timezone(fallback='UTC') self.new.start = datetime_fixer(self.old.start_date, timezone) self.new.end = datetime_fixer(self.old.end_date, timezone) if hasattr(self.old, 'location'): self.new.location = self.old.location if hasattr(self.old, 'attendees'): self.new.attendees = tuple(self.old.attendees.splitlines()) if hasattr(self.old, 'event_url'): self.new.event_url = self.old.event_url if hasattr(self.old, 'contact_name'): self.new.contact_name = self.old.contact_name if hasattr(self.old, 'contact_email'): self.new.contact_email = self.old.contact_email if hasattr(self.old, 'contact_phone'): self.new.contact_phone = self.old.contact_phone if hasattr(self.old, 'text'): # Copy the entire richtext object, not just it's representation self.new.text = self.old.text