ya3

ya3 -- yet another appointment application
Log | Files | Refs

commit d00ff2683b8ed0f2376981f1fc61ee2b57886382
parent 9148a0399680f9ef4f5521fe8786dac1eb2428cf
Author: Matthias Balk <mbalk@mbalk.de>
Date:   Tue,  9 Feb 2021 18:52:12 +0100

default duration for events can now be configured

Diffstat:
Msrc/commands.py | 6+++++-
Msrc/config.tpl | 1+
Msrc/utils.py | 12++++++------
3 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/src/commands.py b/src/commands.py @@ -26,7 +26,7 @@ import dateutil.tz as tz from dateutil.parser import parse import config -from utils import event2string, get_events +from utils import event2string, get_events, parse2local def _localtime2utc(datetimestr): @@ -76,6 +76,10 @@ def create_event(): event[key] = _get_input(key) if re.match('DT', key): event[key] = _localtime2utc(event[key]) + if key == 'DTSTART': + config.DEFAULTS['DTEND'] = parse2local( + event['DTSTART'] + config.DEFAULT_DURATION).strftime( + '%Y-%m-%d %H:%M') _event2file(event) diff --git a/src/config.tpl b/src/config.tpl @@ -7,6 +7,7 @@ DEFAULTS = { 'LOCATION': 'Room I', 'SUMMARY': 'Meeting' } +DEFAULT_DURATION = timedelta(hours=1) MAX_AGE = timedelta(hours=6) MAX_AHEAD = timedelta(days=14) diff --git a/src/utils.py b/src/utils.py @@ -27,7 +27,7 @@ def get_ya3_version(): return '0.2-dev' -def _conv2local(dt, force_datetime=False): +def parse2local(dt, force_datetime=False): if isinstance(dt, datetime): if dt.tzinfo is None: @@ -50,8 +50,8 @@ def get_events(icsfilenames, ignore_configured_range=False): def _is_in_range(event): if ignore_configured_range: return True - start = _conv2local(event.dtstart.value, force_datetime=True) - end = _conv2local(event.dtend.value, force_datetime=True) + start = parse2local(event.dtstart.value, force_datetime=True) + end = parse2local(event.dtend.value, force_datetime=True) return (end >= datetime.now(gettz()) - config.MAX_AGE and start < datetime.now(gettz()) + config.MAX_AHEAD) @@ -61,13 +61,13 @@ def get_events(icsfilenames, ignore_configured_range=False): for cal in vobject.readComponents(f): events.extend(filter(_is_in_range, cal.vevent_list)) - return sorted(events, key=lambda ev: _conv2local(ev.dtstart.value, + return sorted(events, key=lambda ev: parse2local(ev.dtstart.value, force_datetime=True)) def event2string(event): - start = _conv2local(event.dtstart.value) - end = _conv2local(event.dtend.value) + start = parse2local(event.dtstart.value) + end = parse2local(event.dtend.value) try: location = " (" + event.location.value + ")"