summaryrefslogtreecommitdiff
path: root/archaeological_operations
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2013-04-04 18:48:14 +0200
committerÉtienne Loks <etienne.loks@peacefrogs.net>2013-04-04 18:48:14 +0200
commit38f7e9685df66772253a4eb1cd6d53a9d461a937 (patch)
tree6a132db71c7a30abf475fdeaf7a8f0afc2bb2eae /archaeological_operations
parent6c225450c36c0fb58df61dd641f25fa78db2c7a5 (diff)
downloadIshtar-38f7e9685df66772253a4eb1cd6d53a9d461a937.tar.bz2
Ishtar-38f7e9685df66772253a4eb1cd6d53a9d461a937.zip
Operation sheet: group parcels by sections - add parcels to File sheet (refs #1193)
Diffstat (limited to 'archaeological_operations')
-rw-r--r--archaeological_operations/models.py21
-rw-r--r--archaeological_operations/templates/ishtar/sheet_operation.html8
-rw-r--r--archaeological_operations/views.py2
3 files changed, 25 insertions, 6 deletions
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index 675666dbb..02ec1a912 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (C) 2012 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2012-2013 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -18,6 +18,7 @@
# See the file COPYING for details.
import datetime
+from itertools import groupby
from django.conf import settings
from django.contrib.gis.db import models
@@ -137,6 +138,9 @@ class Operation(BaseHistorizedItem, OwnPerms):
unicode(self.operation_code))))
return settings.JOINT.join(items)
+ def grouped_parcels(self):
+ return Parcel.grouped_parcels(list(self.parcels.all()))
+
@classmethod
def get_available_operation_code(cls, year=None):
if not year:
@@ -328,6 +332,21 @@ class Parcel(LightHistorizedItem):
def __unicode__(self):
return self.short_label()
+ @staticmethod
+ def grouped_parcels(parcels):
+ sortkeyfn = lambda s:(getattr(s, 'year'), getattr(s, 'town'),
+ getattr(s, 'section'))
+ parcels.sort(key=sortkeyfn)
+ grouped = []
+ for keys, parcel_grp in groupby(parcels, key=sortkeyfn):
+ for idx, parcel in enumerate(parcel_grp):
+ if not idx:
+ grouped.append(parcel)
+ grouped[-1].parcel_numbers = []
+ grouped[-1].parcel_numbers.append(parcel.parcel_number)
+ grouped[-1].parcel_numbers.sort()
+ return grouped
+
def long_label(self):
items = [unicode(self.operation or self.associated_file)]
items += [unicode(item) for item in [self.section, self.parcel_number]
diff --git a/archaeological_operations/templates/ishtar/sheet_operation.html b/archaeological_operations/templates/ishtar/sheet_operation.html
index 1698f0224..491304125 100644
--- a/archaeological_operations/templates/ishtar/sheet_operation.html
+++ b/archaeological_operations/templates/ishtar/sheet_operation.html
@@ -61,15 +61,15 @@
<th>{% trans "Commune" %}</th>
<th>{% trans "Year" %}</th>
<th>{% trans "Section" %}</th>
- <th>{% trans "Parcel" %}</th>
+ <th>{% trans "Parcels" %}</th>
{#<th>{% trans "Owner" %}</th>#}
</tr>
- {% for parcel in item.parcels.all %}
+ {% for parcel in item.grouped_parcels %}
<tr>
<td class='string'>{{parcel.town}}</td>
<td>{{parcel.year}}</td>
<td>{{parcel.section}}</td>
- <td>{{parcel.parcel_number}}</td>
+ <td>{{parcel.parcel_numbers|join:", "}}</td>
{#<td class='string'>{{operation.parcel.owner}}</td>#}
</tr>
{% empty %}
@@ -78,7 +78,7 @@
</table>
<table>
- <caption>{%trans "Admninistrative acts"%}</caption>
+ <caption>{%trans "Administrative acts"%}</caption>
<tr>
<th>{% trans "Year" %}</th>
<th>{% trans "Reference" %}</th>
diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py
index 84f208bf3..6e570fc97 100644
--- a/archaeological_operations/views.py
+++ b/archaeological_operations/views.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (C) 2010-2012 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2010-2013 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as