Merge pull request #561 from vimpostor/localdatetime

pull/564/head
Nicco Kunzmann 2023-09-29 07:36:31 +01:00 zatwierdzone przez GitHub
commit 0fdbdfb997
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
3 zmienionych plików z 27 dodań i 11 usunięć

Wyświetl plik

@ -6,7 +6,9 @@ Changelog
Minor changes:
- ...
- The cli utility now displays start and end datetimes in the user's local timezone.
Ref: #561
[vimpostor]
Breaking changes:

Wyświetl plik

@ -52,10 +52,10 @@ def view(event):
end = event.decoded('dtend', default=start)
duration = event.decoded('duration', default=end - start)
if isinstance(start, datetime):
start = start.astimezone(start.tzinfo)
start = start.astimezone()
start = start.strftime('%c')
if isinstance(end, datetime):
end = end.astimezone(end.tzinfo)
end = end.astimezone()
end = end.strftime('%c')
return f""" Organizer: {organizer}

Wyświetl plik

@ -1,6 +1,11 @@
import unittest
from datetime import tzinfo, datetime
from icalendar import Calendar, cli
try:
import zoneinfo
except ModuleNotFoundError:
from backports import zoneinfo
INPUT = '''
BEGIN:VCALENDAR
@ -21,7 +26,7 @@ BEGIN:VEVENT
ORGANIZER:organizer@test.test
ATTENDEE:attendee1@example.com
ATTENDEE:attendee2@test.test
SUMMARY:Test summury
SUMMARY:Test summary
DTSTART;TZID=Europe/Warsaw:20220820T200000
DTEND;TZID=Europe/Warsaw:20220820T203000
LOCATION:New Amsterdam, 1010 Test Street
@ -36,13 +41,22 @@ END:VEVENT
END:VCALENDAR
'''
PROPER_OUTPUT = ''' Organizer: organizer <organizer@test.test>
def local_datetime(dt):
return datetime.strptime(dt, "%Y%m%dT%H%M%S").replace(tzinfo=zoneinfo.ZoneInfo("Europe/Warsaw")).astimezone().strftime('%c')
# datetimes are displayed in the local timezone, so we cannot just hardcode them
firststart = local_datetime('20220820T103400')
firstend = local_datetime('20220820T113400')
secondstart = local_datetime('20220820T200000')
secondend = local_datetime('20220820T203000')
PROPER_OUTPUT = f""" Organizer: organizer <organizer@test.test>
Attendees:
attendee1 <attendee1@example.com>
attendee2 <attendee2@test.test>
Summary : Test Summary
Starts : Sat Aug 20 10:34:00 2022
End : Sat Aug 20 11:34:00 2022
Starts : {firststart}
End : {firstend}
Duration : 1:00:00
Location : New Amsterdam, 1000 Sunrise Test Street
Comment : Comment
@ -53,9 +67,9 @@ PROPER_OUTPUT = ''' Organizer: organizer <organizer@test.test>
Attendees:
attendee1 <attendee1@example.com>
attendee2 <attendee2@test.test>
Summary : Test summury
Starts : Sat Aug 20 20:00:00 2022
End : Sat Aug 20 20:30:00 2022
Summary : Test summary
Starts : {secondstart}
End : {secondend}
Duration : 0:30:00
Location : New Amsterdam, 1010 Test Street
Comment :
@ -75,7 +89,7 @@ PROPER_OUTPUT = ''' Organizer: organizer <organizer@test.test>
Description:
'''
"""
class CLIToolTest(unittest.TestCase):
def test_output_is_proper(self):