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 | 04b76c34eacbd9ca39e4d4f61c7c57adf6412107 (patch) | |
| tree | dbbf01b44482b7d17d0e7008de43774ea11b6df0 /ishtar_common/models.py | |
| parent | 83f721df61b06963e2751d8590f8d5fd64d15dac (diff) | |
| download | Ishtar-04b76c34eacbd9ca39e4d4f61c7c57adf6412107.tar.bz2 Ishtar-04b76c34eacbd9ca39e4d4f61c7c57adf6412107.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 | 
