diff options
Diffstat (limited to 'ishtar_common/models.py')
-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: |