summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_files/models.py5
-rw-r--r--archaeological_operations/models.py30
2 files changed, 33 insertions, 2 deletions
diff --git a/archaeological_files/models.py b/archaeological_files/models.py
index 916457324..6d5390737 100644
--- a/archaeological_files/models.py
+++ b/archaeological_files/models.py
@@ -254,8 +254,13 @@ class File(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem):
if self.towns.count():
values[prefix+'towns'] = u", ".join([town.name
for town in self.towns.all().order_by('name')])
+ values[prefix+'parcellist'] = self.render_parcels()
return values
+ def render_parcels(self):
+ from archaeological_operations.models import Parcel
+ return Parcel.render_parcels(list(self.parcels.all()))
+
def __unicode__(self):
if self.cached_label:
return self.cached_label
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index 0a83dbdfc..7e4bd73b6 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -246,6 +246,7 @@ class Operation(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem):
if self.towns.count():
values[prefix+'towns'] = u", ".join([town.name
for town in self.towns.all().order_by('name')])
+ values[prefix+'parcellist'] = self.render_parcels()
return values
@property
@@ -305,6 +306,9 @@ class Operation(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem):
def grouped_parcels(self):
return Parcel.grouped_parcels(list(self.parcels.all()))
+ def render_parcels(self):
+ return Parcel.render_parcels(list(self.parcels.all()))
+
def context_record_docs_q(self):
from archaeological_context_records.models import ContextRecordSource
return ContextRecordSource.objects.filter(
@@ -660,8 +664,8 @@ class Parcel(LightHistorizedItem):
def __unicode__(self):
return self.short_label
- @staticmethod
- def grouped_parcels(parcels):
+ @classmethod
+ def grouped_parcels(cls, parcels):
sortkeyfn = lambda s:(getattr(s, 'town_id'),
getattr(s, 'section'), getattr(s, 'year'))
parcels = sorted(parcels, key=sortkeyfn)
@@ -678,6 +682,28 @@ class Parcel(LightHistorizedItem):
for nb in grouped[-1].parcel_numbers]
return grouped
+
+ @classmethod
+ def render_parcels(cls, parcels):
+ parcels = cls.grouped_parcels(parcels)
+ res = ''
+ c_town, c_section, c_year = '', '', ''
+ for idx, parcels in enumerate(parcels):
+ if c_town != unicode(parcels.town):
+ c_town = unicode(parcels.town)
+ c_section, c_year = '', ''
+ if idx:
+ res += " ; "
+ res += unicode(parcels.town) + u' : '
+ if c_section:
+ res += u" / "
+ c_section = parcels.section
+ res += parcels.section + u' '
+ res += u", ".join(parcels.parcel_numbers)
+ if parcels.year:
+ res += " (%s)" % unicode(parcels.year)
+ return res
+
def long_label(self):
items = [unicode(self.operation or self.associated_file)]
items += [unicode(item) for item in [self.section, self.parcel_number]