diff options
| author | 2021-07-23 16:40:48 -0400 | |
|---|---|---|
| committer | 2021-07-26 22:55:14 -0400 | |
| commit | eee81166c110d75d1a5f36a53000a9828cfa1a5d (patch) | |
| tree | 0a687cc7afc03d53d3dbed3d8b533b81ba5dd8e4 | |
| parent | make sure tagging does not add a tag more than once (diff) | |
fix removing tags from a card
| -rwxr-xr-x | underwriter | 18 |
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) |
