summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-06-03 14:11:45 -0400
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-06-03 14:11:45 -0400
commitbe9ce4b61578e7d99e4a458c495de6ce50574634 (patch)
treed1c45cae2ebc7d27dd58e94ce206b2cc084a4b4e
parentbd28283ee522ee5d1714960dab862011aea3d523 (diff)
downloadaskbot-be9ce4b61578e7d99e4a458c495de6ce50574634.tar.gz
askbot-be9ce4b61578e7d99e4a458c495de6ce50574634.tar.bz2
askbot-be9ce4b61578e7d99e4a458c495de6ce50574634.zip
fixed bug where creating a group could introduce a duplicate tag
-rw-r--r--askbot/models/question.py2
-rw-r--r--askbot/models/tag.py4
-rw-r--r--askbot/tests/db_api_tests.py17
3 files changed, 21 insertions, 2 deletions
diff --git a/askbot/models/question.py b/askbot/models/question.py
index dafe7ab0..affac74c 100644
--- a/askbot/models/question.py
+++ b/askbot/models/question.py
@@ -74,6 +74,7 @@ class ThreadManager(models.Manager):
by_email = False,
email_address = None
):
+ """creates new thread"""
# TODO: Some of this code will go to Post.objects.create_new
thread = super(
@@ -794,6 +795,7 @@ class Thread(models.Model):
return False
def retag(self, retagged_by=None, retagged_at=None, tagnames=None, silent=False):
+ """changes thread tags"""
if None in (retagged_by, retagged_at, tagnames):
raise Exception('arguments retagged_at, retagged_by and tagnames are required')
diff --git a/askbot/models/tag.py b/askbot/models/tag.py
index 779c0b68..03c91162 100644
--- a/askbot/models/tag.py
+++ b/askbot/models/tag.py
@@ -105,7 +105,9 @@ class GroupTagManager(TagManager):
#replace spaces with dashes
group_name = clean_group_name(group_name)
try:
- tag = self.get(name = group_name)
+ #iexact is important!!! b/c we don't want case variants
+ #of tags
+ tag = self.get(name__iexact = group_name)
except self.model.DoesNotExist:
tag = self.model(name = group_name, created_by = user)
tag.save()
diff --git a/askbot/tests/db_api_tests.py b/askbot/tests/db_api_tests.py
index 1f3d3b9b..3a0c9582 100644
--- a/askbot/tests/db_api_tests.py
+++ b/askbot/tests/db_api_tests.py
@@ -15,6 +15,9 @@ from askbot.conf import settings as askbot_settings
import datetime
class DBApiTests(AskbotTestCase):
+ """tests methods on User object,
+ that were added for askbot
+ """
def setUp(self):
self.create_user()
@@ -161,7 +164,8 @@ class DBApiTests(AskbotTestCase):
matches = models.Post.objects.get_questions().get_by_text_query("database'")
self.assertTrue(len(matches) == 1)
-class UserLikeTests(AskbotTestCase):
+class UserLikeTagTests(AskbotTestCase):
+ """tests for user liking and disliking tags"""
def setUp(self):
self.create_user()
self.question = self.post_question(tags = 'one two three')
@@ -387,3 +391,14 @@ class CommentTests(AskbotTestCase):
self.other_user.upvote(comment, cancel = True)
comment = models.Post.objects.get_comments().get(id = self.comment.id)
self.assertEquals(comment.score, 0)
+
+class TagAndGroupTests(AskbotTestCase):
+ def setUp(self):
+ self.u1 = self.create_user('u1')
+
+ def test_group_cannot_create_case_variant_tag(self):
+ self.post_question(user = self.u1, tags = 'one two three')
+ models.Tag.group_tags.get_or_create(user = self.u1, group_name = 'One')
+ tag_one = models.Tag.objects.filter(name__iexact = 'one')
+ self.assertEqual(tag_one.count(), 1)
+ self.assertEqual(tag_one[0].name, 'one')