diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-02-28 11:01:43 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-02-28 11:01:43 +0100 |
commit | 1ac9117fedfb0c336c6c0924eca76b19a4d4207d (patch) | |
tree | 507af023c8cb2d40d7dbfd2ec087dc1ed4d4ad67 /ishtar_common | |
parent | b1ece5afd9d2983bafb1b7804f41424929ebc6e6 (diff) | |
download | Ishtar-1ac9117fedfb0c336c6c0924eca76b19a4d4207d.tar.bz2 Ishtar-1ac9117fedfb0c336c6c0924eca76b19a4d4207d.zip |
Simplify empty value for get_types (and potentially fix strange errors)
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/models.py | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 2496e4372..24704dd21 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -489,8 +489,11 @@ class GeneralType(Cached, models.Model): @classmethod def get_types(cls, dct={}, instances=False, exclude=[], empty_first=True, default=None, initial=None, force=False): - types = cls._pre_get_types(dct, instances, exclude, empty_first, - default, force) + types = [] + if not instances and empty_first and not default: + types = [('', '--')] + types += cls._pre_get_types(dct, instances, exclude, + default, force) if not initial: return types new_vals = cls._get_initial_types(initial, [idx for idx, lbl in types]) @@ -499,13 +502,13 @@ class GeneralType(Cached, models.Model): @classmethod def _pre_get_types(cls, dct={}, instances=False, exclude=[], - empty_first=True, default=None, force=False): + default=None, force=False): # cache cache_key = None if not instances: keys = ['__get_types'] - keys += [u"{}".format(ex) for ex in exclude] + [ - empty_first and 'empty_first' or ''] + [u"{}".format(default)] + keys += [u"{}".format(ex) for ex in exclude] + \ + [u"{}".format(default)] keys += [u'{}-{}'.format(unicode(k), dct[k]) for k in dct] cache_key, value = get_cache(cls, keys) if value and not force: @@ -515,28 +518,25 @@ class GeneralType(Cached, models.Model): if not cache_key: return cls._get_parent_types( base_dct, instances, exclude=exclude, - empty_first=empty_first, default=default) + default=default) vals = [v for v in cls._get_parent_types( base_dct, instances, exclude=exclude, - empty_first=empty_first, default=default)] + default=default)] cache.set(cache_key, vals, settings.CACHE_TIMEOUT) return vals if not cache_key: return cls._get_types(base_dct, instances, exclude=exclude, - empty_first=empty_first, default=default) + default=default) vals = [v for v in cls._get_types( - base_dct, instances, exclude=exclude, empty_first=empty_first, + base_dct, instances, exclude=exclude, default=default)] cache.set(cache_key, vals, settings.CACHE_TIMEOUT) return vals @classmethod - def _get_types(cls, dct={}, instances=False, exclude=[], empty_first=True, - default=None): + def _get_types(cls, dct={}, instances=False, exclude=[], default=None): dct['available'] = True - if not instances and empty_first and not default: - yield ('', '--') if default: try: default = cls.objects.get(txt_idx=default) @@ -606,10 +606,8 @@ class GeneralType(Cached, models.Model): @classmethod def _get_parent_types(cls, dct={}, instances=False, exclude=[], - empty_first=True, default=None): + default=None): dct['available'] = True - if not instances and empty_first: - yield ('', '--') dct['parent'] = None items = cls.objects.filter(**dct) if exclude: |