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): | 
