fix: GroupBySource not updated on template edit

This commit is contained in:
relikd
2022-07-23 19:09:15 +02:00
parent fb8321744e
commit f13bd3dfc6
2 changed files with 12 additions and 3 deletions

View File

@@ -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:

View File

@@ -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: