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:
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 + ")"