@classmethod
def str2tags(cls, tagstr):
    """ Takes a raw string with tags and returns a list of parsed tags.

        :param tagstr: A string with tags as entered by a user on a form.

        :returns: A list of Tag objects. If you subclass Tag, set your subclass
                  in the TAGCLASS property.
        """
    if not tagstr:
        return []
    tags, keys = [], set()
    for strtag in tagstr.split(cls.SEPARATOR):
        cls._process_tag(tags, keys, strtag)
    return tags
