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