kopia lustrzana https://github.com/collective/icalendar
				
				
				
			Allow seconds in vUTCOffset properties. Fixes #55.
							rodzic
							
								
									616fa68655
								
							
						
					
					
						commit
						3aef43f035
					
				|  | @ -5,6 +5,9 @@ Changelog | |||
| 3.4dev (unreleased) | ||||
| ------------------- | ||||
| 
 | ||||
| - Allow seconds in vUTCOffset properties. Fixes #55. | ||||
|   [thet] | ||||
| 
 | ||||
| - Let ``Component.decode`` correctly decode vRecur properties. Fixes #70. | ||||
|   [thet] | ||||
| 
 | ||||
|  |  | |||
|  | @ -790,20 +790,24 @@ class vUTCOffset(object): | |||
|         self.params = Parameters() | ||||
| 
 | ||||
|     def to_ical(self): | ||||
|         td = self.td | ||||
|         day_in_minutes = (td.days * 24 * 60) | ||||
|         seconds_in_minutes = td.seconds // 60 | ||||
|         total_minutes = day_in_minutes + seconds_in_minutes | ||||
|         if total_minutes == 0: | ||||
| 
 | ||||
|         if self.td<timedelta(0): | ||||
|             sign = '-%s' | ||||
|             td = timedelta(0)-self.td # get timedelta relative to 0 | ||||
|         else: | ||||
|             # Google Calendar rejects '0000' but accepts '+0000' | ||||
|             sign = '+%s' | ||||
|         elif total_minutes < 0: | ||||
|             sign = '-%s' | ||||
|             td = self.td | ||||
| 
 | ||||
|         days, seconds = td.days, td.seconds | ||||
| 
 | ||||
|         hours = abs(days * 24 + seconds // 3600) | ||||
|         minutes = abs((seconds % 3600) // 60) | ||||
|         seconds = abs(seconds % 60) | ||||
|         if seconds: | ||||
|             duration = '%02i%02i%02i' % (hours, minutes, seconds) | ||||
|         else: | ||||
|             sign = '+%s' | ||||
|         hours = abs(total_minutes) // 60 | ||||
|         minutes = total_minutes % 60 | ||||
|         duration = '%02i%02i' % (hours, minutes) | ||||
|             duration = '%02i%02i' % (hours, minutes) | ||||
|         return sign % duration | ||||
| 
 | ||||
|     @staticmethod | ||||
|  |  | |||
|  | @ -28,6 +28,29 @@ class TestIssues(unittest.TestCase): | |||
|         self.assertEqual(tz['tzid'].to_ical(), "America/New_York") | ||||
| 
 | ||||
| 
 | ||||
|     def test_issue_55(self): | ||||
|         """Issue #55 - Parse error on utc-offset with seconds value | ||||
|         https://github.com/collective/icalendar/issues/55 | ||||
|         """ | ||||
|         ical_str = """BEGIN:VTIMEZONE | ||||
| TZID:America/Los Angeles | ||||
| BEGIN:STANDARD | ||||
| DTSTART:18831118T120702 | ||||
| RDATE:18831118T120702 | ||||
| TZNAME:PST | ||||
| TZOFFSETFROM:-075258 | ||||
| TZOFFSETTO:-0800 | ||||
| END:STANDARD | ||||
| END:VTIMEZONE""" | ||||
| 
 | ||||
|         tz = icalendar.Timezone.from_ical(ical_str) | ||||
|         self.assertEqual(tz.to_ical(), | ||||
|             'BEGIN:VTIMEZONE\r\nTZID:America/Los Angeles\r\nBEGIN:STANDARD\r\n' | ||||
|             'DTSTART:18831118T120702\r\nRDATE:18831118T120702\r\nTZNAME:PST' | ||||
|             '\r\nTZOFFSETFROM:-075258\r\nTZOFFSETTO:-0800\r\nEND:STANDARD\r\n' | ||||
|             'END:VTIMEZONE\r\n') | ||||
| 
 | ||||
| 
 | ||||
|     def test_issue_58(self): | ||||
|         """Issue #58 - TZID on UTC DATE-TIMEs | ||||
|         https://github.com/collective/icalendar/issues/58 | ||||
|  | @ -82,8 +105,7 @@ SUMMARY:Esb mellon phone conf | |||
| DTSTART:20070220T170000 | ||||
| DTSTAMP:20070221T095412Z | ||||
| SEQUENCE:0 | ||||
| END:VEVENT | ||||
| """ | ||||
| END:VEVENT""" | ||||
| 
 | ||||
|         cal = icalendar.Calendar.from_ical(ical_str) | ||||
|         recur = cal.decoded("RRULE") | ||||
|  |  | |||
|  | @ -401,6 +401,11 @@ class TestProp(unittest.TestCase): | |||
|         self.assertEqual(vUTCOffset(timedelta(hours=1, minutes=30)).to_ical(), | ||||
|                          '+0130') | ||||
| 
 | ||||
|         # Support seconds | ||||
|         self.assertEqual(vUTCOffset(timedelta(hours=1, | ||||
|                                               minutes=30, | ||||
|                                               seconds=7)).to_ical(), '+013007') | ||||
| 
 | ||||
|         # Parsing | ||||
| 
 | ||||
|         self.assertEqual(vUTCOffset.from_ical('0000'), timedelta(0)) | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 Johannes Raggam
						Johannes Raggam