diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-04-10 00:34:08 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-04-10 00:34:08 +0200 |
commit | 412e1567c453509ca980ea1350f20e89db612f7a (patch) | |
tree | 800d34322bdecea118fbbb62db376b1d0bbf4e05 /ishtar/furnitures/models.py | |
parent | 00993b14812e6cc97b1e268e986884e92523f05e (diff) | |
download | Ishtar-412e1567c453509ca980ea1350f20e89db612f7a.tar.bz2 Ishtar-412e1567c453509ca980ea1350f20e89db612f7a.zip |
Show history in sheets (refs #349)
Diffstat (limited to 'ishtar/furnitures/models.py')
-rw-r--r-- | ishtar/furnitures/models.py | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/ishtar/furnitures/models.py b/ishtar/furnitures/models.py index 2fe65b598..de519076f 100644 --- a/ishtar/furnitures/models.py +++ b/ishtar/furnitures/models.py @@ -174,15 +174,32 @@ class BaseHistorizedItem(models.Model): super(BaseHistorizedItem, self).save(*args, **kwargs) return True - def get_previous(self, step, strict=True): + def get_previous(self, step=None, date=None, strict=True): """ Get a "step" previous state of the item """ + assert step or date historized = self.history.all() - assert len(historized) > step - assert not hasattr(historized, '_step') - item = historized[step] + item = None + if step: + assert len(historized) > step + item = historized[step] + else: + for step, item in enumerate(historized): + if item.history_date == date: + break + # ended with no match + if item.history_date != date: + return item._step = step + if len(historized) != (step + 1): + item._previous = historized[step + 1].history_date + else: + item._previous = None + if step > 0: + item._next = historized[step - 1].history_date + else: + item._next = None model = self.__class__ for k in model._meta.get_all_field_names(): field = model._meta.get_field_by_name(k)[0] |