diff options
-rw-r--r-- | archaeological_files/models.py | 5 | ||||
-rw-r--r-- | archaeological_operations/models.py | 30 |
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] |