aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2021-07-23 16:40:48 -0400
committerGravatar - 2021-07-26 22:55:14 -0400
commiteee81166c110d75d1a5f36a53000a9828cfa1a5d (patch)
tree0a687cc7afc03d53d3dbed3d8b533b81ba5dd8e4
parentmake sure tagging does not add a tag more than once (diff)
fix removing tags from a card
-rwxr-xr-xunderwriter18
1 files changed, 8 insertions, 10 deletions
diff --git a/underwriter b/underwriter
index bff7216..c3115ee 100755
--- a/underwriter
+++ b/underwriter
@@ -40,11 +40,11 @@ class Context:
con = sqlite3.connect(dbname)
con.executescript("""
CREATE TABLE cards (name TEXT PRIMARY KEY NOT NULL,
- tags TEXT NOT NULL,
+ tags TEXT NOT NULL DEFAULT(""),
created INTEGER NOT NULL)
WITHOUT ROWID;
CREATE TABLE tags (name TEXT PRIMARY KEY NOT NULL,
- included TEXT NOT NULL)
+ included TEXT NOT NULL DEFAULT(""))
WITHOUT ROWID;
""")
return con
@@ -82,19 +82,17 @@ WITHOUT ROWID;
self.db.commit()
def card_remove_tags(self, name, tags):
- tags,created = self.get_card(name)
+ oldtags,created = self.get_card(name)
if tags is None:
return None
- newtags = None
- for t in tags.split("\t"):
- if t not in tags:
- newtags = append_tag(newtags, t)
+ oldtags = set([] if oldtags is None else oldtags.split("\t"))
+ oldtags -= tags
self.db.execute(
"INSERT OR REPLACE INTO cards VALUES (?,?,?)",
- (name, newtags, created))
-
+ (name, "\t".join(list(oldtags)), created))
+ self.db.commit()
def remove_card(self, name):
tags,_ = self.get_card(name)
@@ -147,7 +145,7 @@ if __name__ == "__main__":
for i in args[1:]:
ctx.remove(i)
elif args[0] == "untag":
- ctx.card_remove_tags(args[1], args[2:])
+ ctx.card_remove_tags(args[1], set(args[2:]))
else:
usage()
sys.exit(1)