summaryrefslogtreecommitdiff
path: root/archaeological_operations/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_operations/models.py')
-rw-r--r--archaeological_operations/models.py62
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):