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' | ||||
|   >>> for k,v in cal.items(): | ||||
|   ...     k,v | ||||
|   (u'DTSTART', '20050404T080000') | ||||
|   (u'SUMMARY', 'Python meeting about calendaring') | ||||
|   ('DTSTART', '20050404T080000') | ||||
|   ('SUMMARY', 'Python meeting about calendaring') | ||||
| 
 | ||||
| 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 | ||||
|  | @ -90,7 +90,7 @@ string, but not a vText component. | |||
| You can generate a string for a file with the to_ical() method:: | ||||
| 
 | ||||
|   >>> 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:: | ||||
| 
 | ||||
|  | @ -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:: | ||||
| 
 | ||||
|   >>> 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:: | ||||
| 
 | ||||
|   >>> cal = Calendar() | ||||
|   >>> cal['attendee'] = ['MAILTO:maxm@mxm.dk','MAILTO:test@example.com'] | ||||
|   >>> print display(cal) | ||||
|   >>> print(display(cal)) | ||||
|   BEGIN:VCALENDAR | ||||
|   ATTENDEE:MAILTO:maxm@mxm.dk | ||||
|   ATTENDEE:MAILTO:test@example.com | ||||
|  | @ -122,7 +122,7 @@ added. Here is an example:: | |||
|   >>> cal = Calendar() | ||||
|   >>> cal.add('attendee', 'MAILTO:maxm@mxm.dk') | ||||
|   >>> cal.add('attendee', 'MAILTO:test@example.com') | ||||
|   >>> print display(cal) | ||||
|   >>> print(display(cal)) | ||||
|   BEGIN:VCALENDAR | ||||
|   ATTENDEE:MAILTO:maxm@mxm.dk | ||||
|   ATTENDEE:MAILTO:test@example.com | ||||
|  | @ -148,7 +148,7 @@ component:: | |||
| And then appending it to a "parent":: | ||||
| 
 | ||||
|   >>> cal.add_component(event) | ||||
|   >>> print display(cal) | ||||
|   >>> print(display(cal)) | ||||
|   BEGIN:VCALENDAR | ||||
|   ATTENDEE:MAILTO:maxm@mxm.dk | ||||
|   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:: | ||||
| 
 | ||||
|   >>> cal.subcomponents | ||||
|   [VEVENT({'DTSTART': '20050404T080000', 'UID': '42'})] | ||||
|   [VEVENT({'UID': '42', 'DTSTART': '20050404T080000'})] | ||||
| 
 | ||||
| 
 | ||||
| Value types | ||||
|  | @ -184,7 +184,7 @@ type defined in the spec:: | |||
|   >>> from datetime import datetime | ||||
|   >>> cal.add('dtstart', datetime(2005,4,4,8,0,0)) | ||||
|   >>> cal['dtstart'].to_ical() | ||||
|   '20050404T080000' | ||||
|   b'20050404T080000' | ||||
| 
 | ||||
| If that doesn't work satisfactorily for some reason, you can also do it | ||||
| manually. | ||||
|  | @ -197,7 +197,7 @@ So if you want to do it manually:: | |||
|   >>> from icalendar import vDatetime | ||||
|   >>> now = datetime(2005,4,4,8,0,0) | ||||
|   >>> vDatetime(now).to_ical() | ||||
|   '20050404T080000' | ||||
|   b'20050404T080000' | ||||
| 
 | ||||
| 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 | ||||
|  | @ -220,7 +220,7 @@ value directly:: | |||
|   >>> cal = Calendar() | ||||
|   >>> cal.add('dtstart', datetime(2005,4,4,8,0,0)) | ||||
|   >>> cal['dtstart'].to_ical() | ||||
|   '20050404T080000' | ||||
|   b'20050404T080000' | ||||
|   >>> cal.decoded('dtstart') | ||||
|   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 | ||||
| identifier (if applicable) are automatically added here:: | ||||
| 
 | ||||
|     >>> import pytz | ||||
|     >>> event = Event() | ||||
|     >>> event.add('dtstart', datetime(2010, 10, 10, 10, 0, 0, | ||||
|     ...                               tzinfo=pytz.timezone("Europe/Vienna"))) | ||||
| 
 | ||||
|     >>> lines = event.to_ical().splitlines() | ||||
|     >>> self.assertTrue( | ||||
|     >>> assert ( | ||||
|     ...     b"DTSTART;TZID=Europe/Vienna;VALUE=DATE-TIME:20101010T100000" | ||||
|     ...     in lines) | ||||
| 
 | ||||
|  | @ -249,7 +250,7 @@ dictionary to the add method like so:: | |||
|     >>> event.add('X-TEST-PROP', 'tryout.', | ||||
|     ...           parameters={'prop1':'val1', 'prop2':'val2'}) | ||||
|     >>> 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 | ||||
|  | @ -270,7 +271,6 @@ Some properties are required to be compliant:: | |||
| 
 | ||||
| We need at least one subcomponent for a calendar to be compliant:: | ||||
| 
 | ||||
|   >>> import pytz | ||||
|   >>> event = Event() | ||||
|   >>> event.add('summary', 'Python meeting about calendaring') | ||||
|   >>> event.add('dtstart', datetime(2005,4,4,8,0,0,tzinfo=pytz.utc)) | ||||
|  | @ -314,6 +314,7 @@ Write to disk:: | |||
|   >>> directory = tempfile.mkdtemp() | ||||
|   >>> f = open(os.path.join(directory, 'example.ics'), 'wb') | ||||
|   >>> f.write(cal.to_ical()) | ||||
|   570 | ||||
|   >>> f.close() | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 Nicco Kunzmann
						Nicco Kunzmann