def test_pae_dxevent_is_migrated(self): from datetime import datetime from plone.app.contenttypes.migration.migration import migrate_events from plone.app.textfield.value import RichTextValue from plone.app.event.dx.behaviors import IEventSummary # Enable plone.app.event.dx from plone.app.testing import applyProfile applyProfile(self.portal, 'plone.app.event.dx:default') old_event = self.portal[self.portal.invokeFactory( 'plone.app.event.dx.event', 'dx-event', start=datetime(2011, 11, 11, 11, 0), end=datetime(2011, 11, 11, 12, 0), timezone="Asia/Tbilisi", whole_day=False, )] old_event_acc = IEventAccessor(old_event) old_event_acc.contact_name = 'George' old_event_acc.contact_email = '*****@*****.**' old_event_acc.contact_phone = '+99512345' old_event_acc.event_url = 'http://geor.ge/event' old_event_acc.text = RichTextValue( raw='Woo, yeah', mimeType='text/plain', outputMimeType='text/x-html-safe' ) # migrate applyProfile(self.portal, 'plone.app.contenttypes:default') migrate_events(self.portal) # Compare new and old events new_event = self.portal['dx-event'] new_event_acc = IEventAccessor(new_event) self.assertEqual(False, old_event.exclude_from_nav) self.assertEqual('Event', new_event.portal_type) self.assertEqual(2011, new_event_acc.start.year) self.assertEqual(11, new_event_acc.start.month) self.assertEqual(11, new_event_acc.start.day) self.assertEqual(11, new_event_acc.start.hour) self.assertEqual('Asia/Tbilisi', str(new_event_acc.start.tzinfo)) self.assertEqual(2011, new_event_acc.end.year) self.assertEqual(11, new_event_acc.end.month) self.assertEqual(11, new_event_acc.end.day) self.assertEqual(12, new_event_acc.end.hour) self.assertEqual('Asia/Tbilisi', str(new_event_acc.end.tzinfo)) self.assertEqual(u'Asia/Tbilisi', new_event_acc.timezone) self.assertEqual(u'George', new_event_acc.contact_name) self.assertEqual(u'*****@*****.**', new_event_acc.contact_email) self.assertEqual(u'+99512345', new_event_acc.contact_phone) self.assertEqual(u'http://geor.ge/event', new_event_acc.event_url) self.assertEqual(u'<p>Woo, yeah</p>', new_event_acc.text) self.assertEqual('Woo, yeah', IEventSummary(new_event).text.raw) self.assertEqual(False, new_event.exclude_from_nav)
def test_event_accessor(self): utc = pytz.utc vienna = pytz.timezone('Europe/Vienna') self.portal.invokeFactory('Event', 'event1', description='a description', startDate=datetime(2011, 11, 11, 11, 0, tzinfo=utc), endDate=datetime(2011, 11, 11, 12, 0, tzinfo=utc), timezone='UTC', wholeDay=False) e1 = self.portal['event1'] acc = IEventAccessor(e1) # TEST DATES self.assertEqual(acc.start, datetime(2011, 11, 11, 11, 0, tzinfo=utc)) self.assertEqual(acc.end, datetime(2011, 11, 11, 12, 0, tzinfo=utc)) acc.start = datetime(2011, 11, 13, 9, 0) # tzinfo does not matter, acc.end = datetime(2011, 11, 13, 10, 0) # it's set by subscription # adapter # If using EventAccessor's edit method, calling notify isn't needed acc.edit(timezone=u'Europe/Vienna') # accessor should return start/end datetimes in the event's timezone self.assertEqual( acc.start, datetime(2011, 11, 13, 9, 0, tzinfo=vienna)) self.assertEqual( acc.end, datetime(2011, 11, 13, 10, 0, tzinfo=vienna)) # start/end dates are stored in UTC zone on the context, but converted # to event's timezone via the attribute getter. self.assertEqual( e1.end(), DateTime('2011/11/13 10:00:00 Europe/Vienna') ) # timezone should be the same on the event object and accessor self.assertEqual(e1.getTimezone(), acc.timezone) # Open End Test acc.edit(open_end=True) self.assertEqual( acc.start, datetime(2011, 11, 13, 9, 0, tzinfo=vienna)) self.assertEqual( acc.end, datetime(2011, 11, 13, 23, 59, 59, tzinfo=vienna)) # Whole Day Test acc.edit(whole_day=True, open_end=False) self.assertEqual( acc.start, datetime(2011, 11, 13, 0, 0, tzinfo=vienna)) self.assertEqual( acc.end, datetime(2011, 11, 13, 23, 59, 59, tzinfo=vienna)) # TEST DESCRIPTION self.assertTrue(acc.description == 'a description') acc.description = 'another desc' self.assertTrue(acc.description == 'another desc') # TEST OTHER PROPERTIES acc.title = u"An Event" acc.recurrence = u'RRULE:FREQ=DAILY;COUNT=5' acc.location = u"Home" acc.attendees = [u'me', u'you'] acc.contact_name = u"Max Mustermann" acc.contact_email = u"*****@*****.**" acc.contact_phone = u"+1234567890" acc.event_url = u"http://plone.org/" acc.subjects = [u"tag1", u"tag2"] acc.text = u"body text with <b>html</b> formating." # If not using EventAccessor's edit method, call notify manually notify(ObjectModifiedEvent(acc.context)) self.assertEqual(acc.recurrence, u'RRULE:FREQ=DAILY;COUNT=5') self.assertEqual(acc.location, u'Home') self.assertEqual(acc.attendees, (u'me', u'you')) self.assertEqual(acc.contact_name, u"Max Mustermann") self.assertEqual(acc.contact_email, u'*****@*****.**') self.assertEqual(acc.contact_phone, u"+1234567890") self.assertEqual(acc.event_url, u"http://plone.org/") self.assertEqual(acc.subjects, (u"tag1", u"tag2")) self.assertEqual(acc.text, u"body text with <b>html</b> formating.") # CLEANUP self.portal.manage_delObjects(['event1'])