def get_tag_list(tag_str): if isinstance(tag_str, basestring): if not tag_str: return [] tags = [] ambiguous_slugs = [] category = None deprecated = False tags_splitted = tag_str.split('/') for name in tags_splitted: if category: tags.append(Tag.objects.get(slug=name, category=category)) category = None elif name in Tag.categories_rev: category = Tag.categories_rev[name] else: try: tags.append(Tag.objects.get(slug=name)) deprecated = True except Tag.MultipleObjectsReturned: ambiguous_slugs.append(name) if category: # something strange left off raise Tag.DoesNotExist() if ambiguous_slugs: # some tags should be qualified e = Tag.MultipleObjectsReturned() e.tags = tags e.ambiguous_slugs = ambiguous_slugs raise e if deprecated: raise Tag.UrlDeprecationWarning(tags=tags) return tags else: return TagBase.get_tag_list(tag_str)
if category: # something strange left off raise Tag.DoesNotExist() if ambiguous_slugs: # some tags should be qualified e = Tag.MultipleObjectsReturned() e.tags = real_tags e.ambiguous_slugs = ambiguous_slugs raise e if deprecated: e = Tag.UrlDeprecationWarning() e.tags = real_tags raise e return real_tags else: return TagBase.get_tag_list(tags) @property def url_chunk(self): return '/'.join((Tag.categories_dict[self.category], self.slug)) @staticmethod def tags_from_info(info): from slughifi import slughifi from sortify import sortify meta_tags = [] categories = (('kinds', 'kind'), ('genres', 'genre'), ('authors', 'author'), ('epochs', 'epoch')) for field_name, category in categories: try: tag_names = getattr(info, field_name) except:
if category: # something strange left off raise Tag.DoesNotExist() if ambiguous_slugs: # some tags should be qualified e = Tag.MultipleObjectsReturned() e.tags = real_tags e.ambiguous_slugs = ambiguous_slugs raise e if deprecated: e = Tag.UrlDeprecationWarning() e.tags = real_tags raise e return real_tags else: return TagBase.get_tag_list(tags) @property def url_chunk(self): return '/'.join((Tag.categories_dict[self.category], self.slug)) @staticmethod def tags_from_info(info): from fnpdjango.utils.text.slughifi import slughifi from sortify import sortify meta_tags = [] categories = (('kinds', 'kind'), ('genres', 'genre'), ('authors', 'author'), ('epochs', 'epoch')) for field_name, category in categories: try: tag_names = getattr(info, field_name)