sync-inoreader: Completely flush tags on syncing database
authorJack Miller <jack@codezen.org>
Sat, 7 Nov 2015 22:40:16 +0000 (16:40 -0600)
committerJack Miller <jack@codezen.org>
Sun, 15 Nov 2015 20:00:51 +0000 (14:00 -0600)
canto_next/tag.py
plugins/sync-rsync.py

index 592f5ed..dcba4d1 100644 (file)
@@ -54,6 +54,9 @@ class CantoTags():
     def set_extra_tags(self, tag, extra_tags):
         self.extra_tags[tag] = extra_tags
 
+    def clear_tags(self):
+        self.tags = {}
+
     def reset(self):
         self.tag_transforms = {}
         self.extra_tags = {}
@@ -63,7 +66,7 @@ class CantoTags():
 
         # It it isn't, then the add or remove will set it for us.
 
-        self.tags = {}
+        self.clear_tags()
 
     #
     # Following must be called with tag_lock held with write
index f968217..791807a 100644 (file)
@@ -51,6 +51,7 @@ from canto_next.remote import DaemonRemotePlugin
 from canto_next.config import parse_locks, parse_unlocks, config
 from canto_next.locks import config_lock, feed_lock
 from canto_next.feed import wlock_all, wunlock_all, rlock_all, runlock_all, allfeeds
+from canto_next.tag import alltags
 
 from tempfile import mkstemp
 import subprocess
@@ -254,6 +255,15 @@ class CantoFileSync(DaemonBackendPlugin):
 
                 self.backend.shelf.open()
 
+                # Clear out all of the currently tagged items. Usually on
+                # update, we're able to discard items that we have in old
+                # content, but aren't in new. But since we just replaced all of
+                # our old content with a totally fresh copy, we might not know
+                # they exist. Can't use reset() because we don't want to lose
+                # configuration.
+
+                alltags.clear_tags()
+
                 # First half of wunlock_all, release these locks so
                 # fetch threads can get locks