From f13bd3dfc63d0423f38ed845601e3add6a363cae Mon Sep 17 00:00:00 2001 From: relikd Date: Sat, 23 Jul 2022 19:09:15 +0200 Subject: [PATCH] fix: GroupBySource not updated on template edit --- lektor_groupby/groupby.py | 6 ++++++ lektor_groupby/plugin.py | 9 ++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lektor_groupby/groupby.py b/lektor_groupby/groupby.py index 372ccd8..6dfd888 100644 --- a/lektor_groupby/groupby.py +++ b/lektor_groupby/groupby.py @@ -22,6 +22,11 @@ class GroupBy: self._watcher = [] # type: List[Watcher] self._results = [] # type: List[GroupBySource] self.resolver = resolver + self.didBuild = False + + @property + def isNew(self) -> bool: + return not self.didBuild def add_watcher(self, key: str, config: 'AnyConfig') -> Watcher: ''' Init Config and add to watch list. ''' @@ -60,6 +65,7 @@ class GroupBy: def make_once(self, builder: 'Builder') -> None: ''' Perform groupby, iter over sources with watcher callback. ''' + self.didBuild = True if self._watcher: self.resolver.reset() for w in self._watcher: diff --git a/lektor_groupby/plugin.py b/lektor_groupby/plugin.py index 659e6ce..9fd8c95 100644 --- a/lektor_groupby/plugin.py +++ b/lektor_groupby/plugin.py @@ -1,4 +1,4 @@ -from lektor.db import Page # isinstance +from lektor.assets import File, Directory # isinstance from lektor.pluginsystem import Plugin # subclass from typing import TYPE_CHECKING, Iterator, Any from .backref import GroupByRef, VGroups @@ -27,8 +27,11 @@ class GroupByPlugin(Plugin): ) -> None: # before-build may be called before before-build-all (issue #1017) # make sure it is always evaluated first - if isinstance(source, Page): - self._init_once(builder) + if isinstance(source, (File, Directory)): + return + groupby = self._init_once(builder) + if groupby.isNew and isinstance(source, GroupBySource): + self.has_changes = True def on_after_build(self, build_state: 'BuildState', **extra: Any) -> None: if build_state.updated_artifacts: