From 1ce5a7552e696b6b7e507b0c1e52f9e5f1bc42bf Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Sun, 23 Oct 2011 05:45:15 +0900 Subject: [PATCH] ensure top level properties updated on rename --- anki/groups.py | 9 ++++++++- tests/test_groups.py | 11 ++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/anki/groups.py b/anki/groups.py index 765b728ba..a4ac9af39 100644 --- a/anki/groups.py +++ b/anki/groups.py @@ -181,7 +181,14 @@ class GroupManager(object): grp['name'] = grp['name'].replace(g['name']+ "::", newName + "::") self.save(grp) - # then update provided group + # adjust top level conf + if "::" in newName and "::" not in g['name']: + for k in defaultTopConf.keys(): + del g[k] + elif "::" not in newName and "::" in g['name']: + for k,v in defaultTopConf.items(): + g[k] = v + # adjust name and save g['name'] = newName self.save(g) # finally, ensure we have parents diff --git a/tests/test_groups.py b/tests/test_groups.py index a1814bc34..b730dad2d 100644 --- a/tests/test_groups.py +++ b/tests/test_groups.py @@ -84,4 +84,13 @@ def test_rename(): for n in "yo", "yo::two", "yo::two::three": assert n in d.groups.allNames() - +def test_topRename(): + d = getEmptyDeck() + id = d.groups.id("hello::world") + # when moving to or from top level, properties should be updated + assert 'newSpread' in d.groups.get(d.groups.id("hello")) + assert 'newSpread' not in d.groups.get(d.groups.id("hello::world")) + d.groups.rename(d.groups.get(d.groups.id("hello")), "foo::bar") + assert 'newSpread' not in d.groups.get(d.groups.id("foo::bar")) + d.groups.rename(d.groups.get(d.groups.id("foo::bar")), "hello") + assert 'newSpread' in d.groups.get(d.groups.id("hello"))