Make API change so TagHandler.all() returns all tag-keys regardless of category; the now single argument return_key_and_category still returns (key, category) tuples. For category-selective returns, use TagHandler.get(). Resolves #1124.

This commit is contained in:
Griatch 2016-11-22 20:04:59 +01:00
parent 1e22b89447
commit 45a4d01a0a

View file

@ -65,10 +65,10 @@ class Tag(models.Model):
index_together = (('db_key', 'db_category', 'db_tagtype'),) index_together = (('db_key', 'db_category', 'db_tagtype'),)
def __unicode__(self): def __unicode__(self):
return u"<Tag: %s>" % self.db_key return u"<Tag: %s%s>" % (self.db_key, "(category:%s)" % self.db_category if self.db_category else "")
def __str__(self): def __str__(self):
return str("<Tag: %s>" % self.db_key) return str("<Tag: %s%s>" % (self.db_key, "(category:%s)" % self.db_category if self.db_category else ""))
# #
@ -279,7 +279,7 @@ class TagHandler(object):
""" """
ret = [] ret = []
for keystr in make_iter(key): for keystr in make_iter(key):
ret.extend([tag if return_tagobj else tag.db_key ret.extend([tag if return_tagobj else to_str(tag.db_key)
for tag in self._getcache(key, category)]) for tag in self._getcache(key, category)])
return ret[0] if len(ret) == 1 else (ret if ret else default) return ret[0] if len(ret) == 1 else (ret if ret else default)
@ -325,14 +325,11 @@ class TagHandler(object):
self._catcache = {} self._catcache = {}
self._cache_complete = False self._cache_complete = False
def all(self, category=None, return_key_and_category=False): def all(self, return_key_and_category=False):
""" """
Get all tags in this handler. Get all tags in this handler, regardless of category.
Args: Args:
category (str, optional): The Tag category to limit the
request to. Note that `None` is the valid, default
category.
return_key_and_category (bool, optional): Return a list of return_key_and_category (bool, optional): Return a list of
tuples `[(key, category), ...]`. tuples `[(key, category), ...]`.
@ -344,7 +341,7 @@ class TagHandler(object):
""" """
if not self._cache_complete: if not self._cache_complete:
self._fullcache() self._fullcache()
tags = sorted(self._getcache(None, category), key=lambda o:o.id) tags = sorted(self._cache.values())
if return_key_and_category: if return_key_and_category:
# return tuple (key, category) # return tuple (key, category)
return [(to_str(tag.db_key), to_str(tag.db_category)) for tag in tags] return [(to_str(tag.db_key), to_str(tag.db_category)) for tag in tags]