Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # the version that runs fine
- def add_tag(self, obj, tag_name):
- """
- Associates the given object with a tag.
- """
- tag_names = parse_tag_input(tag_name)
- if not len(tag_names):
- raise AttributeError(_('No tags were given: "%s".') % tag_name)
- if len(tag_names) > 1:
- raise AttributeError(_('Multiple tags were given: "%s".') % tag_name)
- tag_name = tag_names[0]
- try:
- tag = Tag.objects.get(slug=slugify(tag_name))
- except Tag.DoesNotExist:
- tag = Tag(name=tag_name)
- tag.save()
- else:
- # check if there is a preferred synonym for this tag
- try:
- related_tag = RelatedTag.objects.get(tag=tag, relation_type='=>')
- except RelatedTag.DoesNotExist:
- pass
- else:
- # there is a preferred synonym; use it instead of the original
- tag = related_tag.related_tag
- ctype = ContentType.objects.get_for_model(obj)
- try:
- ti = TaggedItem.objects.get(tag=tag, content_type=ctype, object_id=obj.pk)
- except TaggedItem.DoesNotExist:
- pass
- else:
- ti = TaggedItem(tag=tag, content_type=ctype, object_id=obj.pk)
- ti.save()
- # the one that raises db error
- def add_tag(self, obj, tag_name):
- """
- Associates the given object with a tag.
- """
- tag_names = parse_tag_input(tag_name)
- if not len(tag_names):
- raise AttributeError(_('No tags were given: "%s".') % tag_name)
- if len(tag_names) > 1:
- raise AttributeError(_('Multiple tags were given: "%s".') % tag_name)
- tag_name = tag_names[0]
- if tagging_settings.FORCE_LOWERCASE_TAGS:
- tag_name = tag_name.lower()
- tag, created = self.get_or_create(slug=slugify(tag_name),
- defaults={'name': tag_name})
- if not created:
- # check if there is a preferred synonym for this tag
- try:
- related_tag = RelatedTag.objects.get(tag=tag, relation_type='=>')
- except RelatedTag.DoesNotExist:
- pass
- else:
- # there is a preferred synonym; use it instead of the original
- tag = related_tag.related_tag
- ctype = ContentType.objects.get_for_model(obj)
- TaggedItem._default_manager.get_or_create(
- tag=tag, content_type=ctype, object_id=obj.pk)
Advertisement
Add Comment
Please, Sign In to add comment