Bladeren bron

add entry to MassFileLister after writing metadata

fix #15184
w-e-w 1 jaar geleden
bovenliggende
commit
fb62f1fb40
2 gewijzigde bestanden met toevoegingen van 20 en 4 verwijderingen
  1. 3 4
      modules/ui_extra_networks_user_metadata.py
  2. 17 0
      modules/util.py

+ 3 - 4
modules/ui_extra_networks_user_metadata.py

@@ -133,8 +133,10 @@ class UserMetadataEditor:
         filename = item.get("filename", None)
         filename = item.get("filename", None)
         basename, ext = os.path.splitext(filename)
         basename, ext = os.path.splitext(filename)
 
 
-        with open(basename + '.json', "w", encoding="utf8") as file:
+        metadata_path = basename + '.json'
+        with open(metadata_path, "w", encoding="utf8") as file:
             json.dump(metadata, file, indent=4, ensure_ascii=False)
             json.dump(metadata, file, indent=4, ensure_ascii=False)
+        self.page.lister.update_file_entry(metadata_path)
 
 
     def save_user_metadata(self, name, desc, notes):
     def save_user_metadata(self, name, desc, notes):
         user_metadata = self.get_user_metadata(name)
         user_metadata = self.get_user_metadata(name)
@@ -200,6 +202,3 @@ class UserMetadataEditor:
             inputs=[self.edit_name_input],
             inputs=[self.edit_name_input],
             outputs=[]
             outputs=[]
         )
         )
-
-
-

+ 17 - 0
modules/util.py

@@ -81,6 +81,17 @@ class MassFileListerCachedDir:
         self.files = {x[0].lower(): x for x in files}
         self.files = {x[0].lower(): x for x in files}
         self.files_cased = {x[0]: x for x in files}
         self.files_cased = {x[0]: x for x in files}
 
 
+    def update_entry(self, filename):
+        """Add a file to the cache"""
+        file_path = os.path.join(self.dirname, filename)
+        try:
+            stat = os.stat(file_path)
+            entry = (filename, stat.st_mtime, stat.st_ctime)
+            self.files[filename.lower()] = entry
+            self.files_cased[filename] = entry
+        except FileNotFoundError as e:
+            print(f'MassFileListerCachedDir.add_entry: "{file_path}" {e}')
+
 
 
 class MassFileLister:
 class MassFileLister:
     """A class that provides a way to check for the existence and mtime/ctile of files without doing more than one stat call per file."""
     """A class that provides a way to check for the existence and mtime/ctile of files without doing more than one stat call per file."""
@@ -136,3 +147,9 @@ class MassFileLister:
     def reset(self):
     def reset(self):
         """Clear the cache of all directories."""
         """Clear the cache of all directories."""
         self.cached_dirs.clear()
         self.cached_dirs.clear()
+
+    def update_file_entry(self, path):
+        """Update the cache for a specific directory."""
+        dirname, filename = os.path.split(path)
+        if cached_dir := self.cached_dirs.get(dirname):
+            cached_dir.update_entry(filename)