diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-01-15 17:51:10 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-01-15 17:51:10 +0100 |
commit | 551569a29d5a8ca5cf9c4a171933874faa8ad89e (patch) | |
tree | dbbf01b44482b7d17d0e7008de43774ea11b6df0 /ishtar_common/models.py | |
parent | c768ca5bdc236838f6724e50aa26c1ef48a29ee4 (diff) | |
download | Ishtar-551569a29d5a8ca5cf9c4a171933874faa8ad89e.tar.bz2 Ishtar-551569a29d5a8ca5cf9c4a171933874faa8ad89e.zip |
File: settings for M2M history
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 528ba6512..c241b4fad 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -159,7 +159,10 @@ class HistoryModel(models.Model): def m2m_listing(self, key, create=False): if not self.history_m2m or key not in self.history_m2m: return - models = import_module(self.__class__.__module__ + ".models") + models = self.__class__.__module__ + if not models.endswith('.models'): + models += ".models" + models = import_module(models) model = getattr( models, self.__class__.__name__[len('Historical'):]) related_model = getattr(model, key).rel.model @@ -2656,6 +2659,22 @@ class Department(models.Model): def natural_key(self): return (self.number,) + def history_compress(self): + return self.number + + @classmethod + def history_decompress(cls, full_value, create=False): + if not full_value: + return [] + res = [] + for value in full_value: + try: + res.append(cls.objects.get(number=value)) + except cls.DoesNotExist: + continue + return res + + class Address(BaseHistorizedItem): address = models.TextField(_(u"Address"), null=True, blank=True) @@ -4217,6 +4236,25 @@ class Town(Imported, models.Model): def natural_key(self): return (self.numero_insee, self.year) + def history_compress(self): + values = {'numero_insee': self.numero_insee, + 'year': self.year or ""} + return values + + @classmethod + def history_decompress(cls, full_value, create=False): + if not full_value: + return [] + res = [] + for value in full_value: + try: + res.append( + cls.objects.get(numero_insee=value['numero_insee'], + year=value['year'] or None)) + except cls.DoesNotExist: + continue + return res + def __unicode__(self): if self.cached_label: return self.cached_label |