summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
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
commit04b76c34eacbd9ca39e4d4f61c7c57adf6412107 (patch)
treedbbf01b44482b7d17d0e7008de43774ea11b6df0 /ishtar_common
parent83f721df61b06963e2751d8590f8d5fd64d15dac (diff)
downloadIshtar-04b76c34eacbd9ca39e4d4f61c7c57adf6412107.tar.bz2
Ishtar-04b76c34eacbd9ca39e4d4f61c7c57adf6412107.zip
File: settings for M2M history
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/models.py40
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