kopia lustrzana https://github.com/collective/icalendar
				
				
				
			convert usage.rst to valid doctest
							rodzic
							
								
									9c2d097d8b
								
							
						
					
					
						commit
						fb51485ed2
					
				| 
						 | 
					@ -79,8 +79,8 @@ you do it like this. The calendar is a component::
 | 
				
			||||||
  >>> cal['summary'] = 'Python meeting about calendaring'
 | 
					  >>> cal['summary'] = 'Python meeting about calendaring'
 | 
				
			||||||
  >>> for k,v in cal.items():
 | 
					  >>> for k,v in cal.items():
 | 
				
			||||||
  ...     k,v
 | 
					  ...     k,v
 | 
				
			||||||
  (u'DTSTART', '20050404T080000')
 | 
					  ('DTSTART', '20050404T080000')
 | 
				
			||||||
  (u'SUMMARY', 'Python meeting about calendaring')
 | 
					  ('SUMMARY', 'Python meeting about calendaring')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
NOTE: the recommended way to add components to the calendar is to use
 | 
					NOTE: the recommended way to add components to the calendar is to use
 | 
				
			||||||
create the subcomponent and add it via Calendar.add! The example above adds a
 | 
					create the subcomponent and add it via Calendar.add! The example above adds a
 | 
				
			||||||
| 
						 | 
					@ -90,7 +90,7 @@ string, but not a vText component.
 | 
				
			||||||
You can generate a string for a file with the to_ical() method::
 | 
					You can generate a string for a file with the to_ical() method::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  >>> cal.to_ical()
 | 
					  >>> cal.to_ical()
 | 
				
			||||||
  'BEGIN:VCALENDAR\r\nDTSTART:20050404T080000\r\nSUMMARY:Python meeting about calendaring\r\nEND:VCALENDAR\r\n'
 | 
					  b'BEGIN:VCALENDAR\r\nDTSTART:20050404T080000\r\nSUMMARY:Python meeting about calendaring\r\nEND:VCALENDAR\r\n'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The rendered view is easier to read::
 | 
					The rendered view is easier to read::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -102,13 +102,13 @@ The rendered view is easier to read::
 | 
				
			||||||
So, let's define a function so we can easily display to_ical() output::
 | 
					So, let's define a function so we can easily display to_ical() output::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  >>> def display(cal):
 | 
					  >>> def display(cal):
 | 
				
			||||||
  ...    return cal.to_ical().decode("utf-8").replace(b'\r\n', b'\n').strip()
 | 
					  ...    return cal.to_ical().decode("utf-8").replace('\r\n', '\n').strip()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You can set multiple properties like this::
 | 
					You can set multiple properties like this::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  >>> cal = Calendar()
 | 
					  >>> cal = Calendar()
 | 
				
			||||||
  >>> cal['attendee'] = ['MAILTO:maxm@mxm.dk','MAILTO:test@example.com']
 | 
					  >>> cal['attendee'] = ['MAILTO:maxm@mxm.dk','MAILTO:test@example.com']
 | 
				
			||||||
  >>> print display(cal)
 | 
					  >>> print(display(cal))
 | 
				
			||||||
  BEGIN:VCALENDAR
 | 
					  BEGIN:VCALENDAR
 | 
				
			||||||
  ATTENDEE:MAILTO:maxm@mxm.dk
 | 
					  ATTENDEE:MAILTO:maxm@mxm.dk
 | 
				
			||||||
  ATTENDEE:MAILTO:test@example.com
 | 
					  ATTENDEE:MAILTO:test@example.com
 | 
				
			||||||
| 
						 | 
					@ -122,7 +122,7 @@ added. Here is an example::
 | 
				
			||||||
  >>> cal = Calendar()
 | 
					  >>> cal = Calendar()
 | 
				
			||||||
  >>> cal.add('attendee', 'MAILTO:maxm@mxm.dk')
 | 
					  >>> cal.add('attendee', 'MAILTO:maxm@mxm.dk')
 | 
				
			||||||
  >>> cal.add('attendee', 'MAILTO:test@example.com')
 | 
					  >>> cal.add('attendee', 'MAILTO:test@example.com')
 | 
				
			||||||
  >>> print display(cal)
 | 
					  >>> print(display(cal))
 | 
				
			||||||
  BEGIN:VCALENDAR
 | 
					  BEGIN:VCALENDAR
 | 
				
			||||||
  ATTENDEE:MAILTO:maxm@mxm.dk
 | 
					  ATTENDEE:MAILTO:maxm@mxm.dk
 | 
				
			||||||
  ATTENDEE:MAILTO:test@example.com
 | 
					  ATTENDEE:MAILTO:test@example.com
 | 
				
			||||||
| 
						 | 
					@ -148,7 +148,7 @@ component::
 | 
				
			||||||
And then appending it to a "parent"::
 | 
					And then appending it to a "parent"::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  >>> cal.add_component(event)
 | 
					  >>> cal.add_component(event)
 | 
				
			||||||
  >>> print display(cal)
 | 
					  >>> print(display(cal))
 | 
				
			||||||
  BEGIN:VCALENDAR
 | 
					  BEGIN:VCALENDAR
 | 
				
			||||||
  ATTENDEE:MAILTO:maxm@mxm.dk
 | 
					  ATTENDEE:MAILTO:maxm@mxm.dk
 | 
				
			||||||
  ATTENDEE:MAILTO:test@example.com
 | 
					  ATTENDEE:MAILTO:test@example.com
 | 
				
			||||||
| 
						 | 
					@ -161,7 +161,7 @@ And then appending it to a "parent"::
 | 
				
			||||||
Subcomponents are appended to the subcomponents property on the component::
 | 
					Subcomponents are appended to the subcomponents property on the component::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  >>> cal.subcomponents
 | 
					  >>> cal.subcomponents
 | 
				
			||||||
  [VEVENT({'DTSTART': '20050404T080000', 'UID': '42'})]
 | 
					  [VEVENT({'UID': '42', 'DTSTART': '20050404T080000'})]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Value types
 | 
					Value types
 | 
				
			||||||
| 
						 | 
					@ -184,7 +184,7 @@ type defined in the spec::
 | 
				
			||||||
  >>> from datetime import datetime
 | 
					  >>> from datetime import datetime
 | 
				
			||||||
  >>> cal.add('dtstart', datetime(2005,4,4,8,0,0))
 | 
					  >>> cal.add('dtstart', datetime(2005,4,4,8,0,0))
 | 
				
			||||||
  >>> cal['dtstart'].to_ical()
 | 
					  >>> cal['dtstart'].to_ical()
 | 
				
			||||||
  '20050404T080000'
 | 
					  b'20050404T080000'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If that doesn't work satisfactorily for some reason, you can also do it
 | 
					If that doesn't work satisfactorily for some reason, you can also do it
 | 
				
			||||||
manually.
 | 
					manually.
 | 
				
			||||||
| 
						 | 
					@ -197,7 +197,7 @@ So if you want to do it manually::
 | 
				
			||||||
  >>> from icalendar import vDatetime
 | 
					  >>> from icalendar import vDatetime
 | 
				
			||||||
  >>> now = datetime(2005,4,4,8,0,0)
 | 
					  >>> now = datetime(2005,4,4,8,0,0)
 | 
				
			||||||
  >>> vDatetime(now).to_ical()
 | 
					  >>> vDatetime(now).to_ical()
 | 
				
			||||||
  '20050404T080000'
 | 
					  b'20050404T080000'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
So the drill is to initialise the object with a python built in type,
 | 
					So the drill is to initialise the object with a python built in type,
 | 
				
			||||||
and then call the "to_ical()" method on the object. That will return an
 | 
					and then call the "to_ical()" method on the object. That will return an
 | 
				
			||||||
| 
						 | 
					@ -220,7 +220,7 @@ value directly::
 | 
				
			||||||
  >>> cal = Calendar()
 | 
					  >>> cal = Calendar()
 | 
				
			||||||
  >>> cal.add('dtstart', datetime(2005,4,4,8,0,0))
 | 
					  >>> cal.add('dtstart', datetime(2005,4,4,8,0,0))
 | 
				
			||||||
  >>> cal['dtstart'].to_ical()
 | 
					  >>> cal['dtstart'].to_ical()
 | 
				
			||||||
  '20050404T080000'
 | 
					  b'20050404T080000'
 | 
				
			||||||
  >>> cal.decoded('dtstart')
 | 
					  >>> cal.decoded('dtstart')
 | 
				
			||||||
  datetime.datetime(2005, 4, 4, 8, 0)
 | 
					  datetime.datetime(2005, 4, 4, 8, 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -232,12 +232,13 @@ Property parameters are automatically added, depending on the input value. For
 | 
				
			||||||
example, for date/time related properties, the value type and timezone
 | 
					example, for date/time related properties, the value type and timezone
 | 
				
			||||||
identifier (if applicable) are automatically added here::
 | 
					identifier (if applicable) are automatically added here::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    >>> import pytz
 | 
				
			||||||
    >>> event = Event()
 | 
					    >>> event = Event()
 | 
				
			||||||
    >>> event.add('dtstart', datetime(2010, 10, 10, 10, 0, 0,
 | 
					    >>> event.add('dtstart', datetime(2010, 10, 10, 10, 0, 0,
 | 
				
			||||||
    ...                               tzinfo=pytz.timezone("Europe/Vienna")))
 | 
					    ...                               tzinfo=pytz.timezone("Europe/Vienna")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    >>> lines = event.to_ical().splitlines()
 | 
					    >>> lines = event.to_ical().splitlines()
 | 
				
			||||||
    >>> self.assertTrue(
 | 
					    >>> assert (
 | 
				
			||||||
    ...     b"DTSTART;TZID=Europe/Vienna;VALUE=DATE-TIME:20101010T100000"
 | 
					    ...     b"DTSTART;TZID=Europe/Vienna;VALUE=DATE-TIME:20101010T100000"
 | 
				
			||||||
    ...     in lines)
 | 
					    ...     in lines)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -249,7 +250,7 @@ dictionary to the add method like so::
 | 
				
			||||||
    >>> event.add('X-TEST-PROP', 'tryout.',
 | 
					    >>> event.add('X-TEST-PROP', 'tryout.',
 | 
				
			||||||
    ...           parameters={'prop1':'val1', 'prop2':'val2'})
 | 
					    ...           parameters={'prop1':'val1', 'prop2':'val2'})
 | 
				
			||||||
    >>> lines = event.to_ical().splitlines()
 | 
					    >>> lines = event.to_ical().splitlines()
 | 
				
			||||||
    >>> self.assertTrue(b"X-TEST-PROP;PROP1=val1;PROP2=val2:tryout." in lines)
 | 
					    >>> assert b"X-TEST-PROP;PROP1=val1;PROP2=val2:tryout." in lines
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Example
 | 
					Example
 | 
				
			||||||
| 
						 | 
					@ -270,7 +271,6 @@ Some properties are required to be compliant::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
We need at least one subcomponent for a calendar to be compliant::
 | 
					We need at least one subcomponent for a calendar to be compliant::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  >>> import pytz
 | 
					 | 
				
			||||||
  >>> event = Event()
 | 
					  >>> event = Event()
 | 
				
			||||||
  >>> event.add('summary', 'Python meeting about calendaring')
 | 
					  >>> event.add('summary', 'Python meeting about calendaring')
 | 
				
			||||||
  >>> event.add('dtstart', datetime(2005,4,4,8,0,0,tzinfo=pytz.utc))
 | 
					  >>> event.add('dtstart', datetime(2005,4,4,8,0,0,tzinfo=pytz.utc))
 | 
				
			||||||
| 
						 | 
					@ -314,6 +314,7 @@ Write to disk::
 | 
				
			||||||
  >>> directory = tempfile.mkdtemp()
 | 
					  >>> directory = tempfile.mkdtemp()
 | 
				
			||||||
  >>> f = open(os.path.join(directory, 'example.ics'), 'wb')
 | 
					  >>> f = open(os.path.join(directory, 'example.ics'), 'wb')
 | 
				
			||||||
  >>> f.write(cal.to_ical())
 | 
					  >>> f.write(cal.to_ical())
 | 
				
			||||||
 | 
					  570
 | 
				
			||||||
  >>> f.close()
 | 
					  >>> f.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Ładowanie…
	
		Reference in New Issue