From d9b4259d5f22b9cff07a5b83f0d8e9913eb08935 Mon Sep 17 00:00:00 2001 From: Christian Geier Date: Mon, 30 Oct 2023 23:58:06 +0100 Subject: [PATCH] validate new alarm settings --- khal/controllers.py | 5 +++-- khal/settings/khal.spec | 8 ++++---- khal/ui/__init__.py | 3 ++- khal/ui/editor.py | 7 ++++--- tests/settings_test.py | 8 ++++---- 5 files changed, 17 insertions(+), 14 deletions(-) diff --git a/khal/controllers.py b/khal/controllers.py index 4c9d888b9..604b71ec7 100644 --- a/khal/controllers.py +++ b/khal/controllers.py @@ -50,6 +50,7 @@ from .khalendar.vdir import Item from .terminal import merge_columns from .utils import human_formatter, json_formatter +from .parse_datetime import timedelta2str logger = logging.getLogger('khal') @@ -412,9 +413,9 @@ def new_from_string(collection, calendar_name, conf, info, location=None, ) if alarms is None: if info['allday']: - alarms = conf['default']['default_dayevent_alarm'] + alarms = timedelta2str(conf['default']['default_dayevent_alarm']) else: - alarms = conf['default']['default_event_alarm'] + alarms = timedelta2str(conf['default']['default_event_alarm']) info.update({ 'location': location, 'categories': categories, diff --git a/khal/settings/khal.spec b/khal/settings/khal.spec index 8f856e460..be07bdab7 100644 --- a/khal/settings/khal.spec +++ b/khal/settings/khal.spec @@ -216,11 +216,11 @@ default_event_duration = timedelta(default='1d') # Define the default duration for an event ('khal new' only) default_dayevent_duration = timedelta(default='1h') -# Define the default alarm for a day-long event, e.g. '12h' ('khal new' only) -default_event_alarm = string(default='') +# Define the default alarm for new events, e.g. '15m' +default_event_alarm = timedelta(default='') -# Define the default alarm for an event, e.g. '10m' ('khal new' only) -default_dayevent_alarm = string(default='') +# Define the default alarm for new all dayevents, e.g. '12h' +default_dayevent_alarm = timedelta(default='') # Whether the mouse should be enabled in interactive mode ('khal interactive' and # 'ikhal' only) diff --git a/khal/ui/__init__.py b/khal/ui/__init__.py index d9a1b9830..69e1d44f3 100644 --- a/khal/ui/__init__.py +++ b/khal/ui/__init__.py @@ -37,6 +37,7 @@ from .editor import EventEditor, ExportDialog from .widgets import CalendarWidget, CAttrMap, NColumns, NPile, button, linebox from .widgets import ExtendedEdit as Edit +from ..parse_datetime import timedelta2str logger = logging.getLogger('khal') @@ -907,7 +908,7 @@ def new(self, date: dt.date, end: Optional[dt.date]=None) -> None: 'summary': '', 'timezone': self._conf['locale']['default_timezone'], 'allday': allday, - 'alarms': self._conf['default']['default_event_alarm'], + 'alarms': timedelta2str(self._conf['default']['default_event_alarm']), }) self.edit(event) diff --git a/khal/ui/editor.py b/khal/ui/editor.py index e214aaf20..b4404f409 100644 --- a/khal/ui/editor.py +++ b/khal/ui/editor.py @@ -474,9 +474,10 @@ def type_change(self, allday: bool) -> None: if not hasattr(self, 'alarmseditor'): return - from ..utils import alarmstr2trigger - default_event_alarm = list(alarmstr2trigger(self._conf['default']['default_event_alarm']))[0] - default_dayevent_alarm = list(alarmstr2trigger(self._conf['default']['default_dayevent_alarm']))[0] + # to make the alarms before the event, we need to set it them to + # negative values + default_event_alarm = -1 * self._conf['default']['default_event_alarm'] + default_dayevent_alarm =-1 * self._conf['default']['default_dayevent_alarm'] alarms = self.alarmseditor.get_alarms() if len(alarms) == 1: timedelta = alarms[0][0] diff --git a/tests/settings_test.py b/tests/settings_test.py index dd8efc549..74fe25ab6 100644 --- a/tests/settings_test.py +++ b/tests/settings_test.py @@ -54,8 +54,8 @@ def test_simple_config(self): 'timedelta': dt.timedelta(days=2), 'default_event_duration': dt.timedelta(days=1), 'default_dayevent_duration': dt.timedelta(hours=1), - 'default_event_alarm': '', - 'default_dayevent_alarm': '', + 'default_event_alarm': dt.timedelta(0), + 'default_dayevent_alarm': dt.timedelta(0), 'show_all_days': False, 'enable_mouse': True, } @@ -107,8 +107,8 @@ def test_small(self): 'default_dayevent_duration': dt.timedelta(hours=1), 'show_all_days': False, 'enable_mouse': True, - 'default_event_alarm': '', - 'default_dayevent_alarm': '', + 'default_event_alarm': dt.timedelta(0), + 'default_dayevent_alarm': dt.timedelta(0), } } for key in comp_config: