summaryrefslogtreecommitdiff
path: root/ishtar/furnitures/models.py
diff options
context:
space:
mode:
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
commitd9425a6b4ee791ad6f35457209800edfd4311da8 (patch)
tree800d34322bdecea118fbbb62db376b1d0bbf4e05 /ishtar/furnitures/models.py
parent3fcd45377c58b3427d134218b1976c764be3558f (diff)
downloadIshtar-d9425a6b4ee791ad6f35457209800edfd4311da8.tar.bz2
Ishtar-d9425a6b4ee791ad6f35457209800edfd4311da8.zip
Show history in sheets (refs #349)
Diffstat (limited to 'ishtar/furnitures/models.py')
-rw-r--r--ishtar/furnitures/models.py25
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]