diff options
Diffstat (limited to 'ishtar/ishtar_base')
| -rw-r--r-- | ishtar/ishtar_base/models.py | 78 | 
1 files changed, 66 insertions, 12 deletions
| diff --git a/ishtar/ishtar_base/models.py b/ishtar/ishtar_base/models.py index 8e456191e..52ad08587 100644 --- a/ishtar/ishtar_base/models.py +++ b/ishtar/ishtar_base/models.py @@ -859,19 +859,73 @@ class OperationDashboard:                          years.append(0)                  years.append(sum(years))                  dct_res['by_dpt'].append((dpt_label, years)) +            dct_res['effective_by_dpt'] = [] +            for dpt_id, dpt_label in self.departments: +                vals = OperationByDepartment.objects\ +                       .filter(department__pk=dpt_id, +                       operation__in_charge__isnull=False, +                       operation__operation_type__txt_idx__in=ope_types)\ +                       .values('department__pk', 'operation__year')\ +                       .annotate(number=Count('operation'), +                                 area=Sum('operation__surface'), +                                 fnap=Sum('operation__fnap_financing'), +                                 cost=Sum('operation__cost'))\ +                       .order_by('operation__year') +                dct_years = {} +                for v in vals: +                    values = [] +                    for value in (v['number'], v['area'], v['cost'], v['fnap']): +                        values.append(value if value else 0) +                    dct_years[v['operation__year']] = values +                years = [] +                for y in self.years: +                    if y in dct_years: +                        years.append(dct_years[y]) +                    else: +                        years.append((0, 0, 0, 0)) +                nbs, areas, costs, fnaps = zip(*years) +                years.append((sum(nbs), sum(areas), sum(costs), sum(fnaps))) +                dct_res['effective_by_dpt'].append((dpt_label, years)) + +            OperationTown = Operation.towns.through +            query = OperationTown.objects\ +                            .filter(operation__in_charge__isnull=False, +                       operation__operation_type__txt_idx__in=ope_types)\ +                            .values('town__name', 'town__departement__number')\ +                            .annotate(nb=Count('operation'))\ +                            .order_by('-nb', 'town__name')[:10] +            dct_res['towns'] = [] +            for r in query: +                dct_res['towns'].append((u"%s (%s)" % (r['town__name'], +                                         r['town__departement__number']), +                                         r['nb'])) - - - - - - - - - - - - +            if dct_res == self.survey: +                query = OperationTown.objects\ +                                .filter(operation__in_charge__isnull=False, +                           operation__operation_type__txt_idx__in=ope_types, +                           operation__surface__isnull=False)\ +                             .values('town__name', 'town__departement__number')\ +                             .annotate(nb=Sum('operation__surface'))\ +                             .order_by('-nb', 'town__name')[:10] +                dct_res['towns_surface'] = [] +                for r in query: +                    dct_res['towns_surface'].append((u"%s (%s)" % ( +                            r['town__name'], r['town__departement__number']), +                            r['nb'])) +            else: +                query = OperationTown.objects\ +                                .filter(operation__in_charge__isnull=False, +                           operation__operation_type__txt_idx__in=ope_types, +                           operation__cost__isnull=False)\ +                             .values('town__name', 'town__departement__number')\ +                             .annotate(nb=Sum('operation__cost'))\ +                             .order_by('-nb', 'town__name')[:10] +                dct_res['towns_cost'] = [] +                for r in query: +                    dct_res['towns_cost'].append((u"%s (%s)" % (r['town__name'], +                                             r['town__departement__number']), +                                             r['nb']))  class Dashboard:      def __init__(self, model): | 
