def _create_map_values(data_list): data_dict = convert2dict(data_list, 'slug') map_values = [] for t in ThematicMapMixin._get_territorio_set(): sum = 0 url = '' if t.istat_id in settings.COMUNI_CRATERE: url = reverse('localita', kwargs={'slug': t.slug}) if data_dict.get(t.slug, None): value = data_dict[t.slug][0]['value'] count = data_dict[t.slug][0]['count'] if data_dict[t.slug][0].get('sum', None): sum = data_dict[t.slug][0]['sum'] else: value = None count = 0 map_values.append( { 'label': t.nome_con_provincia, 'url': url, 'value': value, 'count': count, 'sum': sum, 'istat_code': "8{}".format(t.istat_id), } ) return map_values
def _create_map_values(data_list): data_dict = convert2dict(data_list, "slug") map_values = [] for t in ThematicMapMixin._get_territorio_set(): sum = 0 url = "" if t.istat_id in settings.COMUNI_CRATERE: url = reverse("localita", kwargs={"slug": t.slug}) if data_dict.get(t.slug, None): value = data_dict[t.slug][0]["value"] count = data_dict[t.slug][0]["count"] if data_dict[t.slug][0].get("sum", None): sum = data_dict[t.slug][0]["sum"] else: value = None count = 0 map_values.append( { "label": t.nome_con_provincia, "url": url, "value": value, "count": count, "sum": sum, "istat_code": "8{}".format(t.istat_id), } ) return map_values
def get_attuazione_values(self, page_type): # creates data struct for attuazione map: # for each territorio gathers: n. interventi and sum of interventi cache_key = "{}_map_attuazione_values".format(page_type) attuazione_values = cache.get(cache_key, None) if attuazione_values is None: attuazione_values = list( Territorio.objects.filter(tipologia="C", regione="Emilia Romagna") .filter(**self.map_filters) .annotate(Sum("interventoprogramma__interventopiano__intervento__imp_consolidato")) .annotate(Sum("interventoprogramma__importo_generale")) .values( "slug", "interventoprogramma__interventopiano__intervento__imp_consolidato__sum", "interventoprogramma__importo_generale__sum", ) ) attuazione_n_interventi = ( Territorio.objects.filter( tipologia="C", regione="Emilia Romagna", interventoprogramma__interventopiano__intervento__isnull=False, **self.map_filters ) .annotate(c=Count("interventoprogramma")) .values("slug", "c") ) n_interventi_dict = convert2dict(attuazione_n_interventi, "slug") for item in attuazione_values: item["value"] = 0 item["count"] = 0 valore_attuaz = item["interventoprogramma__interventopiano__intervento__imp_consolidato__sum"] item["sum"] = valore_attuaz valore_progr = item["interventoprogramma__importo_generale__sum"] # add count of interventi in attuazione if n_interventi_dict.get(item["slug"], None): item["count"] = n_interventi_dict[item["slug"]][0]["c"] if valore_progr and valore_progr != 0 and valore_attuaz: item["value"] = 100.0 * float(valore_attuaz / valore_progr) attuazione_values = ThematicMapMixin._create_map_values(attuazione_values) cache.set(cache_key, attuazione_values, 60 * 5) return attuazione_values
def get_attuazione_values(self, page_type): # creates data struct for attuazione map: # for each territorio gathers: n. interventi and sum of interventi cache_key = "{}_map_attuazione_values".format(page_type) attuazione_values = cache.get(cache_key, None) if attuazione_values is None: attuazione_values = list( Territorio.objects.filter(tipologia="C", regione="Emilia Romagna"). \ filter(**self.map_filters). \ annotate(Sum('interventoprogramma__interventopiano__intervento__imp_consolidato')). \ annotate(Sum('interventoprogramma__importo_generale')). \ values('slug', 'interventoprogramma__interventopiano__intervento__imp_consolidato__sum', 'interventoprogramma__importo_generale__sum')) attuazione_n_interventi = Territorio.objects. \ filter( tipologia="C", regione="Emilia Romagna", interventoprogramma__interventopiano__intervento__isnull=False, **self.map_filters). \ annotate(c=Count('interventoprogramma')).values('slug', 'c') n_interventi_dict = convert2dict(attuazione_n_interventi, 'slug') for item in attuazione_values: item['value'] = 0 item['count'] = 0 valore_attuaz = item[ 'interventoprogramma__interventopiano__intervento__imp_consolidato__sum'] item['sum'] = valore_attuaz valore_progr = item[ 'interventoprogramma__importo_generale__sum'] # add count of interventi in attuazione if n_interventi_dict.get(item['slug'], None): item['count'] = n_interventi_dict[item['slug']][0]['c'] if valore_progr and valore_progr != 0 and valore_attuaz: item['value'] = 100.0 * float(valore_attuaz / valore_progr) attuazione_values = ThematicMapMixin._create_map_values( attuazione_values) cache.set(cache_key, attuazione_values, 60 * 5) return attuazione_values