コード例 #1
0
    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
コード例 #2
0
    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
コード例 #3
0
    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
コード例 #4
0
    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