From 76c8a84f7864a9d74abeffe8619fc9c75a564be6 Mon Sep 17 00:00:00 2001
From: Alex Gaynor <alex.gaynor@gmail.com>
Date: Sat, 26 Sep 2009 15:01:10 -0400
Subject: [PATCH] more tests, added a remove method to taggable manager

---
 taggit/managers.py    | 8 ++++++++
 taggit/tests/tests.py | 8 ++++++++
 2 files changed, 16 insertions(+)

diff --git a/taggit/managers.py b/taggit/managers.py
index 46343a9..aa6c1c3 100644
--- a/taggit/managers.py
+++ b/taggit/managers.py
@@ -40,6 +40,14 @@ class _TaggableManager(models.Manager):
         self.add(tags)
     
     @require_instance_manager
+    def remove(self, tags):
+        if isinstance(tags, basestring):
+            tags = [tags]
+        TaggedItem.objects.filter(object_id=self.object_id, 
+            content_type=ContentType.objects.get_for_model(self.model)).filter(
+            tag__name__in=tags).delete()
+    
+    @require_instance_manager
     def clear(self):
         TaggedItem.objects.filter(object_id=self.object_id,
             content_type=ContentType.objects.get_for_model(self.model)).delete()
diff --git a/taggit/tests/tests.py b/taggit/tests/tests.py
index 2c0b6c4..7911244 100644
--- a/taggit/tests/tests.py
+++ b/taggit/tests/tests.py
@@ -22,3 +22,11 @@ class AddTagTestCase(BaseTaggingTest):
         pair.tags.add('green')
         self.assert_tags_equal(pair.tags.all(), ['green'])
         self.assert_tags_equal(Food.tags.all(), ['green'])
+        
+        apple.tags.add('red')
+        self.assert_tags_equal(apple.tags.all(), ['green', 'red'])
+        self.assert_tags_equal(Food.tags.all(), ['green', 'red'])
+        
+        apple.tags.remove('green')
+        self.assert_tags_equal(apple.tags.all(), ['red'])
+        self.assert_tags_equal(Food.tags.all(), ['green', 'red'])
--
libgit2 0.26.0