Skip to content

Commit

Permalink
uzsu: introduce set_activetoday plugin function
Browse files Browse the repository at this point in the history
  • Loading branch information
onkelandy committed Dec 21, 2024
1 parent 22ec0f1 commit 5553a3e
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 11 deletions.
41 changes: 30 additions & 11 deletions uzsu/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ def run(self):
self.scheduler_add('uzsu_sunupdate', self._update_all_suns,
value={'caller': 'Scheduler:UZSU'}, cron=self._suncalculation_cron)
self.logger.info(f"Adding sun update schedule for {self._suncalculation_cron}")
self.scheduler_add('uzsu_resetactivetoday', self._reset_activetoday, cron='55 59 23 * * *')
self.scheduler_add('uzsu_resetactivetoday', self.set_activetoday, value={'set': False}, cron='55 59 23 * * *')
_invaliditems = []
update = ''
for item in self._items:
Expand Down Expand Up @@ -177,7 +177,6 @@ def run(self):
# set activeToday to false if entry is in the future (and wasn't reset correctly at midnight)
for i, entry in enumerate(self._items[item].get('list')):
next, _, _ = self._get_time(entry, 'next', item, i, 'dry_run')
self.logger.debug(f'this entry {entry} next {next}')
if next and next.time() > datetime.now().time() and entry.get('activeToday'):
entry['activeToday'] = False
update = 'activeToday'
Expand Down Expand Up @@ -208,15 +207,6 @@ def stop(self):
self.scheduler_remove_all()
self.alive = False

def _reset_activetoday(self):
"""
Set activeToday to False for all list entries (for smartVISU)
"""
for item in self._items:
for entry in self._items[item].get('list'):
entry['activeToday'] = False
self._write_dict_to_item(item, 'reset_activetoday')

def _update_all_suns(self, caller=None):
"""
Update sun information for all uzsu items
Expand Down Expand Up @@ -397,6 +387,34 @@ def interpolation(self, intpl_type=None, interval=5, backintime=0, perday=False,
self._write_dict_to_item(item, 'logic')
return self._items[item].get('interpolation')

def set_activetoday(self, set=False, item=None):
"""
Set activeToday to False for all list entries (for smartVISU)
"""
if item is None:
items_to_change = self._items
elif self._items.get(item) is None:
try:
self.logger.warning(f'Item {item.property.path} is no valid UZSU item!')
except:
self.logger.warning(f'Item {item} does not exist!')
return None
else:
items_to_change = [item]
if isinstance(set, str):
if set.lower() in ['1', 'yes', 'true', 'on']:
reset = True
elif set.lower() in ['0', 'no', 'false', 'off']:
reset = False
else:
self.logger.warning(f'Value to reset activeToday of item "{item}" has to be boolean.')
if isinstance(set, bool):
for item in items_to_change:
for entry in self._items[item].get('list'):
entry['activeToday'] = set
self.logger.debug(f'Item "{item}": set all activeToday entries to {set}')
self._write_dict_to_item(item, 'set_activetoday')

def clear(self, clear=False, item=None):
if self._items.get(item) is None:
try:
Expand Down Expand Up @@ -524,6 +542,7 @@ def parse_item(self, item):
item.resume = functools.partial(self.resume, item=item)
item.interpolation = functools.partial(self.interpolation, item=item)
item.clear = functools.partial(self.clear, item=item)
item.set_activetoday = functools.partial(self.set_activetoday, item=item)
item.planned = functools.partial(self.planned, item=item)
item.itpl = functools.partial(self.itpl, item=item)

Expand Down
25 changes: 25 additions & 0 deletions uzsu/plugin.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,31 @@ plugin_functions:
description:
de: "Das Item-Objekt"
en: "An item object"
set_activetoday:
type: bool
description:
de: 'Alle activeToday Einträge, die durch Einmalausführung gesetzt worden sind, werden auf den entsprechenden Wert gesetzt.'
en: 'All activeToday entries that have been set due to once evaluations are set to the specified value.'
description_long:
de: 'Setzen der activeToday Einträge eines Items.\n
- False: Setzen der Einträge auf False, praktisch ein Reset\n
- True: Setzen der Einträge auf True - im Normalfall nicht hilfreich, lediglich für Debuggingzwecke\n
'
en: 'Delete the activeToday entries of an item.\n
- False: Setting the entries to False, practically resetting them\n
- True: setting the entries to True - usually not helpful except for debugging purposes\n
'
parameters:
set:
type: bool
description:
de: "True, um die activeToday Einträge zu aktivieren, False um sie zu deaktivieren/zurückzusetzen."
en: "True to activate the activeToday entries, False to deactivate/reset them."
item:
type: foo
description:
de: "Das Item-Objekt"
en: "An item object"
itpl:
type: dict
description:
Expand Down

0 comments on commit 5553a3e

Please sign in to comment.