本文整理汇总了Python中icalendar.cal.Component.add_component方法的典型用法代码示例。如果您正苦于以下问题:Python Component.add_component方法的具体用法?Python Component.add_component怎么用?Python Component.add_component使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类icalendar.cal.Component
的用法示例。
在下文中一共展示了Component.add_component方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: cnode2ical
# 需要导入模块: from icalendar.cal import Component [as 别名]
# 或者: from icalendar.cal.Component import add_component [as 别名]
def cnode2ical(cnode):
"""Convert a tree of cnodes to an ical calendar
cnode: typically from Erebus2ICSVisitor
return: icalendar.Calendar
"""
comp = Component()
comp.name = cnode.name.upper()
for k,v in cnode.attr.iteritems():
# If an attribute is a CNode, say n, we must add all the
# attributes of n as parameters to the iCalendar element. We
# first encode the value to the corresponding iCalendar value
# (with types_factory, like icalendar.Component does
# internally), and then add the parameters.
if v.__class__ == CNode:
target_class = types_factory.for_property(k)
val = target_class(v.content)
val.params = Parameters()
for p,pv in v.attr.iteritems():
val.params[p] = pv
comp.add(k, val, encode=0)
else:
comp.add(k, v, encode=1)
for c in cnode.children:
comp.add_component(cnode2ical(c))
return comp
示例2: test_repr
# 需要导入模块: from icalendar.cal import Component [as 别名]
# 或者: from icalendar.cal.Component import add_component [as 别名]
def test_repr(self):
"""Test correct class representation.
"""
from icalendar.cal import Component, Calendar, Event
component = Component()
component['key1'] = 'value1'
self.assertTrue(
re.match(r"Component\({u?'KEY1': u?'value1'}\)", str(component))
)
calendar = Calendar()
calendar['key1'] = 'value1'
self.assertTrue(
re.match(r"VCALENDAR\({u?'KEY1': u?'value1'}\)", str(calendar))
)
event = Event()
event['key1'] = 'value1'
self.assertTrue(
re.match(r"VEVENT\({u?'KEY1': u?'value1'}\)", str(event))
)
# Representation of nested Components
nested = Component(key1='VALUE1')
nested.add_component(component)
calendar.add_component(event)
nested.add_component(calendar)
self.assertTrue(
re.match(
r"Component\({u?'KEY1': u?'VALUE1'}, "
r"Component\({u?'KEY1': u?'value1'}\), "
r"VCALENDAR\({u?'KEY1': u?'value1'}, "
r"VEVENT\({u?'KEY1': u?'value1'}\)\)\)",
str(nested)
)
)
示例3: test_cal_Component
# 需要导入模块: from icalendar.cal import Component [as 别名]
# 或者: from icalendar.cal.Component import add_component [as 别名]
def test_cal_Component(self):
from icalendar.cal import Component, Calendar, Event
from icalendar import prop
# A component is like a dictionary with extra methods and attributes.
c = Component()
c.name = 'VCALENDAR'
# Every key defines a property.A property can consist of either a
# single item. This can be set with a single value...
c['prodid'] = '-//max m//icalendar.mxm.dk/'
self.assertEqual(
c,
Calendar({'PRODID': '-//max m//icalendar.mxm.dk/'})
)
# or with a list
c['ATTENDEE'] = ['Max M', 'Rasmussen']
self.assertEqual(
c,
Calendar({'ATTENDEE': ['Max M', 'Rasmussen'],
'PRODID': '-//max m//icalendar.mxm.dk/'})
)
### ADD MULTIPLE VALUES TO A PROPERTY
# if you use the add method you don't have to considder if a value is
# a list or not.
c = Component()
c.name = 'VEVENT'
# add multiple values at once
c.add('attendee',
['[email protected]', '[email protected]'])
# or add one per line
c.add('attendee', '[email protected]')
c.add('attendee', '[email protected]')
# add again multiple values at once to very concatenaton of lists
c.add('attendee',
['[email protected]', '[email protected]'])
self.assertEqual(
c,
Event({'ATTENDEE': [
prop.vCalAddress('[email protected]'),
prop.vCalAddress('[email protected]'),
prop.vCalAddress('[email protected]'),
prop.vCalAddress('[email protected]'),
prop.vCalAddress('[email protected]'),
prop.vCalAddress('[email protected]')
]})
)
###
# You can get the values back directly ...
c.add('prodid', '-//my product//')
self.assertEqual(c['prodid'], prop.vText(u'-//my product//'))
# ... or decoded to a python type
self.assertEqual(c.decoded('prodid'), b'-//my product//')
# With default values for non existing properties
self.assertEqual(c.decoded('version', 'No Version'), 'No Version')
c.add('rdate', [datetime(2013, 3, 28), datetime(2013, 3, 27)])
self.assertTrue(isinstance(c.decoded('rdate'), prop.vDDDLists))
# The component can render itself in the RFC 2445 format.
c = Component()
c.name = 'VCALENDAR'
c.add('attendee', 'Max M')
self.assertEqual(
c.to_ical(),
b'BEGIN:VCALENDAR\r\nATTENDEE:Max M\r\nEND:VCALENDAR\r\n'
)
# Components can be nested, so You can add a subcompont. Eg a calendar
# holds events.
e = Component(summary='A brief history of time')
e.name = 'VEVENT'
e.add('dtend', '20000102T000000', encode=0)
e.add('dtstart', '20000101T000000', encode=0)
self.assertEqual(
e.to_ical(),
b'BEGIN:VEVENT\r\nDTEND:20000102T000000\r\n'
+ b'DTSTART:20000101T000000\r\nSUMMARY:A brief history of time\r'
+ b'\nEND:VEVENT\r\n'
)
c.add_component(e)
self.assertEqual(
c.subcomponents,
[Event({'DTEND': '20000102T000000', 'DTSTART': '20000101T000000',
'SUMMARY': 'A brief history of time'})]
)
# We can walk over nested componentes with the walk method.
#.........这里部分代码省略.........
示例4: test_cal_Component
# 需要导入模块: from icalendar.cal import Component [as 别名]
# 或者: from icalendar.cal.Component import add_component [as 别名]
def test_cal_Component(self):
from icalendar.cal import Component, Calendar, Event
from icalendar import prop
# A component is like a dictionary with extra methods and attributes.
c = Component()
c.name = "VCALENDAR"
# Every key defines a property.A property can consist of either a
# single item. This can be set with a single value...
c["prodid"] = "-//max m//icalendar.mxm.dk/"
self.assertEqual(c, Calendar({"PRODID": "-//max m//icalendar.mxm.dk/"}))
# or with a list
c["ATTENDEE"] = ["Max M", "Rasmussen"]
self.assertEqual(c, Calendar({"ATTENDEE": ["Max M", "Rasmussen"], "PRODID": "-//max m//icalendar.mxm.dk/"}))
### ADD MULTIPLE VALUES TO A PROPERTY
# if you use the add method you don't have to considder if a value is
# a list or not.
c = Component()
c.name = "VEVENT"
# add multiple values at once
c.add("attendee", ["[email protected]", "[email protected]"])
# or add one per line
c.add("attendee", "[email protected]")
c.add("attendee", "[email protected]")
# add again multiple values at once to very concatenaton of lists
c.add("attendee", ["[email protected]", "[email protected]"])
self.assertEqual(
c,
Event(
{
"ATTENDEE": [
prop.vCalAddress("[email protected]"),
prop.vCalAddress("[email protected]"),
prop.vCalAddress("[email protected]"),
prop.vCalAddress("[email protected]"),
prop.vCalAddress("[email protected]"),
prop.vCalAddress("[email protected]"),
]
}
),
)
###
# You can get the values back directly ...
c.add("prodid", "-//my product//")
self.assertEqual(c["prodid"], prop.vText(u"-//my product//"))
# ... or decoded to a python type
self.assertEqual(c.decoded("prodid"), b"-//my product//")
# With default values for non existing properties
self.assertEqual(c.decoded("version", "No Version"), "No Version")
c.add("rdate", [datetime(2013, 3, 28), datetime(2013, 3, 27)])
self.assertTrue(isinstance(c.decoded("rdate"), prop.vDDDLists))
# The component can render itself in the RFC 2445 format.
c = Component()
c.name = "VCALENDAR"
c.add("attendee", "Max M")
self.assertEqual(c.to_ical(), b"BEGIN:VCALENDAR\r\nATTENDEE:Max M\r\nEND:VCALENDAR\r\n")
# Components can be nested, so You can add a subcompont. Eg a calendar
# holds events.
e = Component(summary="A brief history of time")
e.name = "VEVENT"
e.add("dtend", "20000102T000000", encode=0)
e.add("dtstart", "20000101T000000", encode=0)
self.assertEqual(
e.to_ical(),
b"BEGIN:VEVENT\r\nDTEND:20000102T000000\r\n"
+ b"DTSTART:20000101T000000\r\nSUMMARY:A brief history of time\r"
+ b"\nEND:VEVENT\r\n",
)
c.add_component(e)
self.assertEqual(
c.subcomponents,
[Event({"DTEND": "20000102T000000", "DTSTART": "20000101T000000", "SUMMARY": "A brief history of time"})],
)
# We can walk over nested componentes with the walk method.
self.assertEqual([i.name for i in c.walk()], ["VCALENDAR", "VEVENT"])
# We can also just walk over specific component types, by filtering
# them on their name.
self.assertEqual([i.name for i in c.walk("VEVENT")], ["VEVENT"])
self.assertEqual([i["dtstart"] for i in c.walk("VEVENT")], ["20000101T000000"])
# We can enumerate property items recursively with the property_items
#.........这里部分代码省略.........