diff --git a/boards/models.py b/boards/models.py --- a/boards/models.py +++ b/boards/models.py @@ -188,18 +188,20 @@ class Tag(models.Model): return reply_count - def get_linked_tags(self): - linked_tags = [] - + def get_linked_tags(self, tag_list=[]): + """ + Returns the list of tags linked to current. The list can be got + through returned value or tag_list parameter + """ + linked_tag = self.linked - if linked_tag: - linked_tags.append(linked_tag) + + if linked_tag and not (linked_tag in tag_list): + tag_list.append(linked_tag) - far_tags = linked_tag.get_linked_tags() - if len(far_tags) > 0: - linked_tags.extend(far_tags) + linked_tag.get_linked_tags(tag_list) - return linked_tags + return tag_list class Post(models.Model):