summaryrefslogtreecommitdiff
path: root/archaeological_operations/models.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-08-22 18:25:53 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-08-22 18:37:29 +0200
commitce71152fcae3a25b9cadfd8a4a561829e3296d3c (patch)
tree5d49cc534771a2ec84d8bd33a01fda83aaee1787 /archaeological_operations/models.py
parent8b116164320adbcefab1f5a10a4a401f897ef578 (diff)
downloadIshtar-ce71152fcae3a25b9cadfd8a4a561829e3296d3c.tar.bz2
Ishtar-ce71152fcae3a25b9cadfd8a4a561829e3296d3c.zip
Operations - archaeological files: fix closing info (refs #3175)
Diffstat (limited to 'archaeological_operations/models.py')
-rw-r--r--archaeological_operations/models.py41
1 files changed, 30 insertions, 11 deletions
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index b82854f20..2db101104 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -137,8 +137,36 @@ QUALITY = (('ND', _(u"Not documented")),
('R', _(u"Reliable")),)
-class Operation(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem,
- DashboardFormItem):
+class ClosedItem(object):
+ def closing(self):
+ if self.is_active():
+ return
+ in_history = False
+ date = self.end_date
+ # last action is closing?
+ for idx, item in enumerate(
+ self.history.order_by('-history_date').all()):
+ if not idx:
+ # last action
+ continue
+ if not item.end_date or item.end_date != self.end_date:
+ break
+ in_history = True
+ user = None
+ if in_history:
+ if item.history_modifier_id:
+ q = IshtarUser.objects.filter(pk=item.history_modifier_id)
+ if q.count():
+ user = q.all()[0]
+ elif self.history_modifier_id:
+ q = IshtarUser.objects.filter(pk=self.history_modifier_id)
+ if q.count():
+ user = q.all()[0]
+ return {'date': date, 'user': user}
+
+
+class Operation(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,
+ ShortMenuItem, DashboardFormItem):
QUALITY_DICT = dict(QUALITY)
SHOW_URL = 'show-operation'
TABLE_COLS = ['year_index', 'operation_type', 'remains', 'towns',
@@ -423,15 +451,6 @@ class Operation(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem,
def is_active(self):
return not bool(self.end_date)
- def closing(self):
- if self.is_active():
- return
- for item in self.history.all():
- if not item.end_date:
- break
- return {'date': item.history_date,
- 'user': IshtarUser.objects.get(pk=item.history_modifier_id)}
-
def save(self, *args, **kwargs):
# put a default year if start_date is defined
if self.start_date and not self.year: