diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-01 18:49:14 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-09-01 18:49:14 +0200 |
commit | 80e315e2e69ecfe5e2a976d7a28ef46ec36aa885 (patch) | |
tree | cfcbb351671ea74fd6b9ab43ea4b61d3e4fc661a /ishtar_common/models.py | |
parent | 952bf485126d9f0e3c2357288a31c10d99c9966f (diff) | |
download | Ishtar-80e315e2e69ecfe5e2a976d7a28ef46ec36aa885.tar.bz2 Ishtar-80e315e2e69ecfe5e2a976d7a28ef46ec36aa885.zip |
Non-available types display on old item modification (refs #3179)
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index e2142ef0c..04077b240 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -330,7 +330,28 @@ class GeneralType(Cached, models.Model): @classmethod def get_types(cls, dct={}, instances=False, exclude=[], empty_first=True, - default=None): + default=None, initial=None): + types = cls.pre_get_types(dct, instances, exclude, empty_first, + default) + if not initial: + return types + for value in initial: + try: + pk = int(value) + except ValueError: + continue + if pk in [idx for idx, lbl in types]: + continue + try: + extra_type = cls.objects.get(pk=pk) + types.append((extra_type.pk, unicode(extra_type))) + except cls.DoesNotExist: + continue + return types + + @classmethod + def pre_get_types(cls, dct={}, instances=False, exclude=[], + empty_first=True, default=None): # cache cache_key = None if not instances: |