diff options
Diffstat (limited to 'archaeological_operations/models.py')
-rw-r--r-- | archaeological_operations/models.py | 62 |
1 files changed, 39 insertions, 23 deletions
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index 3494e6427..014dbb269 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -620,24 +620,37 @@ for attr in ArchaeologicalSite.HISTORICAL_M2M: sender=getattr(ArchaeologicalSite, attr).through) -def get_values_town_related(item, prefix, values): - values[prefix + 'parcellist'] = item.render_parcels() - values[prefix + 'towns'] = '' - values[prefix + 'departments'] = '' - values[prefix + 'departments_number'] = '' - values[prefix + 'towns_count'] = str(item.towns.count()) +def get_values_town_related(item, prefix, values, filtr=None): + if not filtr or prefix + 'parcellist' in filtr: + values[prefix + 'parcellist'] = item.render_parcels() + if not filtr or prefix + 'towns_count' in filtr: + values[prefix + 'towns_count'] = str(item.towns.count()) + get_towns = not filtr or prefix + 'towns' in filtr + get_dpt = not filtr or prefix + 'departments' in filtr + get_dpt_nb = not filtr or prefix + 'departments_number' in filtr + if not get_towns and not get_dpt and not get_dpt_nb: + return values + if get_towns: + values[prefix + 'towns'] = '' + if get_dpt: + values[prefix + 'departments'] = '' + if get_dpt_nb: + values[prefix + 'departments_number'] = '' if item.towns.count(): - values[prefix + 'towns'] = ", ".join([ - town.name for town in item.towns.all().order_by('name')]) - if settings.COUNTRY == 'fr': + if get_towns: + values[prefix + 'towns'] = ", ".join([ + town.name for town in item.towns.all().order_by('name')]) + if settings.COUNTRY == 'fr' and (get_dpt_nb or get_dpt_nb): dpts_num = set( [town.numero_insee[:2] for town in item.towns.all()]) - values[prefix + 'departments_number'] = ", ".join( - list(sorted(dpts_num))) - values[prefix + 'departments'] = ", ".join( - [Department.objects.get(number=dpt).label - for dpt in sorted(dpts_num) if Department.objects.filter( - number=dpt).count()]) + if get_dpt_nb: + values[prefix + 'departments_number'] = ", ".join( + list(sorted(dpts_num))) + if get_dpt: + values[prefix + 'departments'] = ", ".join( + [Department.objects.get(number=dpt).label + for dpt in sorted(dpts_num) if Department.objects.filter( + number=dpt).count()]) return values @@ -1204,16 +1217,19 @@ class Operation(ClosedItem, DocumentItem, BaseHistorizedItem, QRCodeItem, def __str__(self): return self.cached_label or "" - def get_values(self, prefix='', no_values=False): - values = super(Operation, self).get_values(prefix=prefix, - no_values=no_values) - values = get_values_town_related(self, prefix, values) + def get_values(self, prefix='', no_values=False, filtr=None, **kwargs): + values = super(Operation, self).get_values( + prefix=prefix, no_values=no_values, filtr=filtr, **kwargs) + values = get_values_town_related(self, prefix, values, filtr=filtr) if prefix: return values - values[prefix + 'context_records'] = [ - cr.get_values(prefix=prefix, no_values=True, no_base_finds=False) - for cr in self.context_record.all() - ] + if not filtr or prefix + 'context_records' in filtr: + kwargs["no_base_finds"] = False + values[prefix + 'context_records'] = [ + cr.get_values(prefix=prefix, no_values=True, filtr=None, + **kwargs) + for cr in self.context_record.all() + ] return values def public_representation(self): |