本文整理汇总了Python中plone.event.interfaces.IEventAccessor类的典型用法代码示例。如果您正苦于以下问题:Python IEventAccessor类的具体用法?Python IEventAccessor怎么用?Python IEventAccessor使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了IEventAccessor类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_event_accessor__start_end
def test_event_accessor__start_end(self):
e1 = createContentInContainer(
self.portal,
'plone.app.event.dx.event',
title=u'event1'
)
dt = datetime(2161, 1, 1) # United Federation of Planets
DT = DateTime('2161/01/01 00:00:00 UTC')
acc = IEventAccessor(e1)
# Setting a timezone-naive datetime should convert it to UTC
acc.start = dt
self.assertEqual(acc.start, utils.utc(dt))
self.assertEqual(e1.start, utils.utc(dt))
# Setting a DateTime should convert it to datetime
acc.start = DT
self.assertEqual(acc.start, utils.utc(dt))
self.assertEqual(e1.start, utils.utc(dt))
# Same goes for acc.end
# Setting a timezone-naive datetime should convert it to UTC
acc.end = dt
self.assertEqual(acc.end, utils.utc(dt))
self.assertEqual(e1.end, utils.utc(dt))
# Setting a DateTime should convert it to datetime
acc.end = DT
self.assertEqual(acc.end, utils.utc(dt))
self.assertEqual(e1.end, utils.utc(dt))
示例2: updateObject
def updateObject(self, context, v):
# Get the accessor object
acc = IEventAccessor(context)
# Establish the input arguments
kwargs = self.getRequestDataAsArguments(v)
# Pass the arguments into the object
acc.edit(**kwargs)
# Update any arguments that are not part of the default event schema
acc.update(**kwargs)
# Update complex fields (text, event agenda)
self.updateComplexFields(acc.context, v)
# Reindex the object
acc.context.reindexObject()
# Ref: http://docs.plone.org/external/plone.app.event/docs/development.html#accessing-event-objects-via-an-unified-accessor-object
# Throw ObjectModifiedEvent after setting properties to call an event subscriber which does some timezone related post calculations
notify(ObjectModifiedEvent(acc.context))
# Return object that was updated
return acc.context
示例3: migrate_schema_fields
def migrate_schema_fields(self):
newacc = IEventAccessor(self.new)
newacc.start = self.old.start_date
newacc.end = self.old.end_date
newacc.timezone = str(self.old.start_date.tzinfo) \
if self.old.start_date.tzinfo \
else default_timezone(fallback='UTC')
if hasattr(self.old, 'location'):
newacc.location = self.old.location
if hasattr(self.old, 'attendees'):
newacc.attendees = tuple(self.old.attendees.splitlines())
if hasattr(self.old, 'event_url'):
newacc.event_url = self.old.event_url
if hasattr(self.old, 'contact_name'):
newacc.contact_name = self.old.contact_name
if hasattr(self.old, 'contact_email'):
newacc.contact_email = self.old.contact_email
if hasattr(self.old, 'contact_phone'):
newacc.contact_phone = self.old.contact_phone
if hasattr(self.old, 'text'):
# Copy the entire richtext object, not just it's representation
IEventSummary(self.new).text = self.old.text
# Trigger ObjectModified, so timezones can be fixed up.
notify(ObjectModifiedEvent(self.new))
示例4: test_event_accessor
def test_event_accessor(self):
obj = MockObject()
tz = pytz.timezone('Europe/Vienna')
obj.start = datetime(2012, 12, 12, 10, 0, tzinfo=tz)
obj.end = datetime(2012, 12, 12, 12, 0, tzinfo=tz)
zope.interface.alsoProvides(obj, IEvent)
# Create accessor
acc = IEventAccessor(obj)
# Accessor getters
self.assertEqual(acc.start, obj.start)
self.assertEqual(acc.end, obj.end)
self.assertEqual(acc.duration, obj.end - obj.start)
# Accessor setters
start = datetime(2013, 4, 5, 16, 31, tzinfo=tz)
end = datetime(2013, 4, 5, 16, 35, tzinfo=tz)
acc.start = start
acc.end = end
self.assertTrue(acc.start == obj.start == start)
self.assertTrue(acc.end == obj.end == end)
# Accessor deletor
acc.something = True
self.assertTrue(acc.something == obj.something is True)
del acc.something
self.assertTrue(hasattr(acc, 'something') is False)
self.assertTrue(hasattr(obj, 'something') is False)
del acc.start
self.assertTrue(hasattr(acc, 'start') is False)
self.assertTrue(hasattr(obj, 'start') is False)
示例5: test_event_accessor__sync_uid
def test_event_accessor__sync_uid(self):
self.request.set('HTTP_HOST', 'nohost')
e1 = createContentInContainer(
self.portal,
'plone.app.event.dx.event',
title=u'event1'
)
acc = IEventAccessor(e1)
# setting no sync uid will automatically generate one
self.assertTrue(acc.sync_uid, IUUID(e1) + '@nohost')
# it's not stored on the object though
self.assertEqual(e1.sync_uid, None)
# but it's indexed
result = self.portal.portal_catalog(sync_uid=IUUID(e1) + '@nohost')
self.assertEqual(len(result), 1)
# Setting the sync_uid
acc.sync_uid = 'okay'
e1.reindexObject()
self.assertEqual(acc.sync_uid, 'okay')
# Now, it's also stored on the object itself
self.assertEqual(e1.sync_uid, 'okay')
# and indexed
result = self.portal.portal_catalog(sync_uid='okay')
self.assertEqual(len(result), 1)
示例6: test_event_accessor
def test_event_accessor(self):
utc = pytz.utc
self.portal.invokeFactory('plone.app.event.dx.event', 'event1',
start=datetime(2011, 11, 11, 11, 0, tzinfo=utc),
end=datetime(2011, 11, 11, 12, 0, tzinfo=utc),
timezone='UTC',
whole_day=False)
e1 = self.portal['event1']
# setting attributes via the accessor
acc = IEventAccessor(e1)
acc.end = datetime(2011, 11, 13, 10, 0)
acc.timezone = TZNAME
tz = pytz.timezone(TZNAME)
# accessor should return end datetime in the event's timezone
self.assertTrue(acc.end == datetime(2011, 11, 13, 11, 0, tzinfo=tz))
# the behavior's end datetime is stored in utc on the content object
self.assertTrue(e1.end == datetime(2011, 11, 13, 10, 0, tzinfo=utc))
# accessing the end property via the behavior adapter, returns the
# value converted to the event's timezone
self.assertTrue(IEventBasic(e1).end ==
datetime(2011, 11, 13, 11, 0, tzinfo=tz))
# timezone should be the same on the event object and accessor
self.assertTrue(e1.timezone == acc.timezone)
self.portal.manage_delObjects(['event1'])
示例7: test_event_accessor
def test_event_accessor(self):
utc = pytz.utc
self.portal.invokeFactory('Event', 'event1',
description='a description',
start=datetime(2011,11,11,11,0, tzinfo=utc),
end=datetime(2011,11,11,12,0, tzinfo=utc),
timezone='UTC',
wholeDay=False)
e1 = self.portal['event1']
# setting attributes via the accessor
acc = IEventAccessor(e1)
acc.end = datetime(2011,11,13,10,0, tzinfo=utc)
acc.timezone = 'Europe/Vienna'
vienna = pytz.timezone('Europe/Vienna')
# test description
self.assertTrue(acc.description == 'a description')
acc.description = 'another desc'
self.assertTrue(acc.description == 'another desc')
# accessor should return end datetime in the event's timezone
self.assertTrue(acc.end == datetime(2011,11,13,11,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.assertTrue(e1.end() ==
DateTime('2011/11/13 11:00:00 Europe/Vienna'))
# timezone should be the same on the event object and accessor
self.assertTrue(e1.getTimezone() == acc.timezone)
self.portal.manage_delObjects(['event1'])
示例8: create
def create(
cls,
container,
content_id,
title,
description=None,
start=None,
end=None,
timezone=None,
whole_day=None,
open_end=None,
**kwargs
):
container.invokeFactory(
cls.event_type,
id=content_id,
title=title,
description=description,
startDate=start,
endDate=end,
wholeDay=whole_day,
open_end=open_end,
timezone=timezone,
)
content = container[content_id]
acc = IEventAccessor(content)
acc.edit(**kwargs)
return acc
示例9: set_allDay
def set_allDay(self, v):
v = bool(v)
if HAS_PAE:
if IEvent.providedBy(self.context):
acc = IEventAccessor(self.context)
acc.whole_day = v
return
self._all_day = v
示例10: test_data_postprocessing
def test_data_postprocessing(self):
# TODO: since we use an IEventAccessor here, this is a possible
# canditate for merging with
# the test_dxevent.TestDXIntegration.test_data_postprocessing test.
# Addressing bug #62
self.portal.invokeFactory('Event', 'ate1',
startDate=DateTime(2012,10,19,0,30),
endDate=DateTime(2012,10,19,1,30),
timezone="Europe/Vienna",
wholeDay=False)
e1 = self.portal['ate1']
e1.reindexObject()
acc = IEventAccessor(e1)
# Prepare reference objects
tzname_1 = "Europe/Vienna"
tz_1 = pytz.timezone(tzname_1)
dt_1 = tz_1.localize(datetime(2012,10,19,0,30))
dt_1_1 = tz_1.localize(datetime(2012,10,19,0,0))
dt_1_2 = tz_1.localize(datetime(2012,10,19,23,59,59))
tzname_2 = "Hongkong"
tz_2 = pytz.timezone(tzname_2)
dt_2 = tz_2.localize(datetime(2012,10,19,0,30))
dt_2_1 = tz_2.localize(datetime(2012,10,19,0,0))
dt_2_2 = tz_2.localize(datetime(2012,10,19,23,59,59))
# See, if start isn't moved by timezone offset.
self.assertTrue(acc.start == dt_1)
notify(ObjectModifiedEvent(e1))
self.assertTrue(acc.start == dt_1)
# After timezone changes, only the timezone should be applied, but the
# date and time values not converted.
acc.timezone = tzname_2
notify(ObjectModifiedEvent(e1))
self.assertTrue(acc.start == dt_2)
# Likewise with wholeDay events. If values were converted, the days
# would drift apart.
acc.whole_day = True
acc.timezone = tzname_1
notify(ObjectModifiedEvent(e1))
self.assertTrue(acc.start == dt_1_1)
self.assertTrue(acc.end == dt_1_2)
acc.timezone = tzname_2
notify(ObjectModifiedEvent(e1))
self.assertTrue(acc.start == dt_2_1)
self.assertTrue(acc.end == dt_2_2)
self.portal.manage_delObjects(['ate1'])
示例11: setUp
def setUp(self):
self.request = self.layer['request']
portal = self.layer['portal']
setRoles(portal, TEST_USER_ID, ['Manager'])
portal.invokeFactory('Folder',
id='events', title=u"Events",
Description=u"The portal's Events")
portal.events.invokeFactory('Event',
id='ploneconf2007', title='Plone Conf 2007',
startDate='2007/10/10', endDate='2007/10/12',
location='Naples',
eventUrl='http://plone.org/events/conferences/2007-naples',
attendees=['anne','bob','cesar'])
portal.events.invokeFactory('Event',
id='ploneconf2008', title='Plone Conf 2008',
startDate='2008/10/08', endDate='2008/10/10', location='DC',
recurrence=u'RRULE:FREQ=DAILY;COUNT=5\r\nEXDATE:20081011T000000,20081012T000000\r\nRDATE:20081007T000000',
eventUrl='http://plone.org/events/conferences/2008-washington-dc')
portal.events.invokeFactory('plone.app.event.dx.event',
id='ploneconf2012', title='Plone Conf 2012',
recurrence=u'RRULE:FREQ=DAILY;COUNT=5\r\nEXDATE:20121013T000000,20121014T000000\r\nRDATE:20121009T000000',
start=datetime(2012,10,10,8,0),
end=datetime(2012,10,10,18,0),
timezone='Europe/Amsterdam')
pc12 = IEventAccessor(portal.events.ploneconf2012)
pc12.location='Arnhem'
pc12.contact_name='Four Digits'
pc12.contact_email='[email protected]'
notify(ObjectModifiedEvent(pc12))
portal.events.invokeFactory('plone.app.event.dx.event',
id='artsprint2013', title='Artsprint 2013',
start=datetime(2013,2,18),
end=datetime(2012,2,22),
whole_day=True,
timezone='Europe/Vienna')
portal.invokeFactory("Collection",
"collection",
title="New Collection",
sort_on='start')
portal['collection'].setQuery([{
'i': 'Type',
'o': 'plone.app.querystring.operation.string.is',
'v': 'Event',
}, ])
self.portal = portal
示例12: setup_event
def setup_event(site):
"""Set the default start and end event properties."""
folder = site['institucional']['eventos']
event = folder['1o-ano-do-site']
acc = IEventAccessor(event)
future = datetime.now() + relativedelta(years=1)
year = future.year
month = future.month
day = future.day
acc.start = datetime(year, month, day, 0, 0, 0)
acc.end = datetime(year, month, day, 23, 59, 59)
notify(ObjectModifiedEvent(event))
event.reindexObject()
logger.debug(u'Evento padrao configurado')
示例13: test_get_occurrences
def test_get_occurrences(self):
result = get_occurrences(self.portal,
get_portal_events(self.portal))
self.assertTrue(len(result) == 9)
result = get_occurrences(self.portal,
get_portal_events(self.portal), limit=5)
self.assertTrue(len(result) == 5)
self.assertTrue(IEventAccessor.providedBy(result[0]))
示例14: test_get_occurrences
def test_get_occurrences(self):
res = get_events(self.portal, ret_mode=3, expand=True)
self.assertTrue(len(res) == 9)
res = get_events(self.portal, start=self.now, ret_mode=3, expand=True)
self.assertTrue(len(res) == 9)
res = get_events(self.portal, ret_mode=3, expand=True, limit=5)
self.assertTrue(len(res) == 5)
self.assertTrue(IEventAccessor.providedBy(res[0]))
示例15: test_event_accessor
def test_event_accessor(self):
tz = pytz.timezone("Europe/Vienna")
e1 = createContentInContainer(
self.portal,
'plone.app.event.dx.event',
title=u'event1',
start=tz.localize(datetime(2011, 11, 11, 11, 0)),
end=tz.localize(datetime(2011, 11, 11, 12, 0)),
)
# setting attributes via the accessor
acc = IEventAccessor(e1)
new_end = tz.localize(datetime(2011, 11, 13, 10, 0))
acc.end = new_end
# context's end should be set to new_end
self.assertEqual(e1.end, new_end)
# accessor's and context datetime should be the same
self.assertEqual(acc.end, e1.end)