Source code for stemp_abw.views.detail_views

from django.utils.translation import gettext_lazy as _
import pandas as pd
import stemp_abw.models as models
from django.views.generic import DetailView
from meta.models import Source
from stemp_abw.app_settings import labels, layer_region_metadata, \
    layer_result_metadata, layer_areas_metadata
from stemp_abw.visualizations import highcharts
from wam.settings import SESSION_DATA


[docs]class MasterDetailView(DetailView): mode = None template_name = 'stemp_abw/popups/base_layer_popup.html' context_object_name = 'layer'
[docs] def get_source_data(self, metadata, app_name): """ This method takes a metadata ConfigObj and returns a list with 0 OR n-amount of Source objects, if primary keys (PK)s of sources records in database are provided in ConfigObj object. Values in the metadata config file should correspond to PKs as list of values (1,2,3,...n). if the sole value 0 is provided in the metadata config file then the returned list is empty. Parameters ---------- metadata : :obj:`ConfigObj` app_name : :obj:`str` Returns ------- :obj:`list` of :obj:`wam.meta.models.Source` List with 0 OR n-amount of Source objects. """ for layer_group in metadata.values(): for layer in layer_group.values(): if layer['model'] == self.model.name: sources = [] # convert sources to list type if it's a string # (happens if there's only 1 source) if isinstance(layer['sources'], str): layer['sources'] = [layer['sources']] for source in layer['sources']: if source == '0': break else: sources.append(Source.objects .filter(app_name=app_name) .get(pk=source)) return sources else: pass
[docs] def get_context_data(self, **kwargs): context = super(MasterDetailView, self).get_context_data(**kwargs) _labels = labels() context['title'] = _labels['layers'][self.model.name]['title'] context['text'] = _labels['layers'][self.model.name]['text'] # Get app_name from request app_name = self.request.resolver_match.app_name # Gather all layer metadata ConfigObj objects layers_metadata = [layer_region_metadata(), layer_result_metadata(), layer_areas_metadata()] # Put sources PKs into context for layer_metadata in layers_metadata: source_layer_metadata = self.get_source_data(layer_metadata, app_name) if source_layer_metadata is not None: context['sources'] = source_layer_metadata return context
[docs] def chart_session_store(self, context): # Backup current HC to session if view for html is requested, # load from session if subsequent view for js is requested. session = SESSION_DATA.get_session(self.request) if session.highcharts_temp is None: context['chart'] = self.build_chart() session.highcharts_temp = context['chart'] else: context['chart'] = session.highcharts_temp session.highcharts_temp = None
########################### # Detail Views for popups # ###########################
[docs]class RpAbwBoundDetailView(MasterDetailView): model = models.RpAbwBound
[docs]class RegMunDetailView(MasterDetailView): model = models.RegMun
[docs]class RegMunPopDetailView(MasterDetailView): model = models.RegMunPop template_name = 'stemp_abw/popups/pop.html'
[docs] def get_context_data(self, **kwargs): context = super(RegMunPopDetailView, self).get_context_data(**kwargs) self.chart_session_store(context) return context
[docs] def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) pop_2017 = mun_data.pop_2017 pop_2030 = mun_data.pop_2030 pop_2050 = mun_data.pop_2050 index = ['2017', '2030', '2050'] data = pd.DataFrame(index=index, data={str(_('Personen')): [pop_2017, pop_2030, pop_2050]}) setup_labels = { 'title': {'text': str(_('Bevölkerungsentwicklung'))}, 'subtitle': {'text': str(_('Prognose'))}, 'yAxis': {'title': {'text': str(_('Personen'))}} } chart = highcharts.HCTimeseries( data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups' ) return chart
[docs]class RegMunPopDensityDetailView(MasterDetailView): model = models.RegMunPopDensity template_name = 'stemp_abw/popups/pop_density.html'
[docs]class RegMunEnergyReElDemShareDetailView(MasterDetailView): model = models.RegMunEnergyReElDemShare template_name = 'stemp_abw/popups/energy_re_el_dem_share.html'
[docs] def get_context_data(self, **kwargs): context = super(RegMunEnergyReElDemShareDetailView, self).get_context_data(**kwargs) self.chart_session_store(context) return context
[docs] def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) reg_mun_dem_el_energy = models.RegMunDemElEnergy.objects.get( pk=self.kwargs['pk']) wind = round(((mun_data.gen_el_energy_wind / 1e3) / reg_mun_dem_el_energy.dem_el_energy) * 100, 1) pv_roof = round(((mun_data.gen_el_energy_pv_roof / 1e3) / reg_mun_dem_el_energy.dem_el_energy) * 100, 1) pv_ground = round(((mun_data.gen_el_energy_pv_ground / 1e3) / reg_mun_dem_el_energy.dem_el_energy) * 100, 1) hydro = round(((mun_data.gen_el_energy_hydro / 1e3) / reg_mun_dem_el_energy.dem_el_energy) * 100, 1) bio = round(((mun_data.gen_el_energy_bio / 1e3) / reg_mun_dem_el_energy.dem_el_energy) * 100, 1) data = pd.DataFrame(data={ 'EE-Träger': {str(_('Wind')): wind, str(_('PV Dach')): pv_roof, str(_('PV Freifläche')): pv_ground, str(_('Wasserkraft')): hydro, str(_('Bioenergie')): bio}}) setup_labels = { 'title': {'text': str(_('EE-Erzeugung'))}, 'subtitle': {'text': str(_('in Prozent zum Strombedarf'))}, 'yAxis': {'title': {'text': str(_('Prozent'))}}, 'tooltip': { 'pointFormat': str(_('Bedarf')) + ': {point.y:.1f} %' } } chart = highcharts.HCStackedColumn( data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups' ) return chart
[docs]class RegMunGenEnergyReDetailView(MasterDetailView): model = models.RegMunGenEnergyRe template_name = 'stemp_abw/popups/gen_energy_re.html'
[docs] def get_context_data(self, **kwargs): context = super(RegMunGenEnergyReDetailView, self).get_context_data( **kwargs) self.chart_session_store(context) return context
[docs] def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) wind = round((mun_data.gen_el_energy_wind / 1e3), 1) pv_roof = round((mun_data.gen_el_energy_pv_roof / 1e3), 1) pv_ground = round((mun_data.gen_el_energy_pv_ground / 1e3), 1) hydro = round((mun_data.gen_el_energy_hydro / 1e3), 1) bio = round((mun_data.gen_el_energy_bio / 1e3), 1) data = pd.DataFrame({ 'name': [str(_('Wind')), str(_('PV Dach')), str(_('PV Freifläche')), str(_('Wasserkraft')), str(_('Bioenergie'))], 'y': [wind, pv_roof, pv_ground, hydro, bio] }) data.set_index('name', inplace=True) # Convert data to appropriate format for pie chart data = data.reset_index().to_dict(orient='records') setup_labels = { 'title': {'text': str(_('Gewonnene Energie aus EE'))}, 'subtitle': {'text': str(_('nach Quelle'))}, 'plotOptions': { 'pie': { 'dataLabels': { 'format': '<b>{point.name}</b>: {point.y} \ GWh<br>({point.percentage:.1f} %)', } } }, 'tooltip': { 'pointFormat': '<b>{point.name}</b>: {point.y} \ GWh<br>({point.percentage:.1f} %)' } } chart = highcharts.HCPiechart( data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups' ) return chart
[docs]class RegMunGenEnergyRePerCapitaDetailView(MasterDetailView): model = models.RegMunGenEnergyRePerCapita template_name = 'stemp_abw/popups/gen_energy_re_per_capita.html'
[docs] def get_context_data(self, **kwargs): context = super(RegMunGenEnergyRePerCapitaDetailView, self).get_context_data(**kwargs) self.chart_session_store(context) return context
[docs] def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) wind = round((mun_data.gen_el_energy_wind / mun_data.pop_2017), 1) pv_roof = round((mun_data.gen_el_energy_pv_roof / mun_data.pop_2017), 1) pv_ground = round( (mun_data.gen_el_energy_pv_ground / mun_data.pop_2017), 1) hydro = round((mun_data.gen_el_energy_hydro / mun_data.pop_2017), 1) bio = round((mun_data.gen_el_energy_bio / mun_data.pop_2017), 1) data = pd.DataFrame({ 'name': [str(_('Wind')), str(_('PV Dach')), str(_('PV Freifläche')), str(_('Wasserkraft')), str(_('Bioenergie'))], 'y': [wind, pv_roof, pv_ground, hydro, bio] }) data.set_index('name', inplace=True) # Convert data to appropriate format for pie chart data = data.reset_index().to_dict(orient='records') setup_labels = { 'title': {'text': str(_('Gewonnene Energie aus EE'))}, 'subtitle': {'text': str(_('je EinwohnerIn'))}, 'plotOptions': { 'pie': { 'dataLabels': { 'format': '<b>{point.name}</b>: {point.y} \ MWh<br>({point.percentage:.1f} %)', } } }, 'tooltip': { 'pointFormat': '<b>{point.name}</b>: {point.y} \ MWh<br>({point.percentage:.1f} %)' } } chart = highcharts.HCPiechart( data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups' ) return chart
[docs]class RegMunGenEnergyReDensityDetailView(MasterDetailView): model = models.RegMunGenEnergyReDensity template_name = 'stemp_abw/popups/gen_energy_re_density.html'
[docs] def get_context_data(self, **kwargs): context = super(RegMunGenEnergyReDensityDetailView, self).get_context_data(**kwargs) self.chart_session_store(context) return context
[docs] def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) wind = round((mun_data.gen_el_energy_wind / mun_data.area), 1) pv_roof = round((mun_data.gen_el_energy_pv_roof / mun_data.area), 1) pv_ground = round((mun_data.gen_el_energy_pv_ground / mun_data.area), 1) hydro = round((mun_data.gen_el_energy_hydro / mun_data.area), 1) bio = round((mun_data.gen_el_energy_bio / mun_data.area), 1) data = pd.DataFrame({ 'name': [str(_('Wind')), str(_('PV Dach')), str(_('PV Freifläche')), str(_('Wasserkraft')), str(_('Bioenergie'))], 'y': [wind, pv_roof, pv_ground, hydro, bio] }) data.set_index('name', inplace=True) # Convert data to appropriate format for pie chart data = data.reset_index().to_dict(orient='records') setup_labels = { 'title': {'text': str(_('Gewonnene Energie aus EE'))}, 'subtitle': {'text': str(_('je km²'))}, 'plotOptions': { 'pie': { 'dataLabels': { 'format': '<b>{point.name}</b>: {point.y} \ MWh<br>({point.percentage:.1f} %)', } } }, 'tooltip': { 'pointFormat': '<b>{point.name}</b>: {point.y} \ MWh<br>({point.percentage:.1f} %)' } } chart = highcharts.HCPiechart( data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups' ) return chart
[docs]class RegMunGenCapReDetailView(MasterDetailView): model = models.RegMunGenCapRe template_name = 'stemp_abw/popups/gen_cap_re.html'
[docs] def get_context_data(self, **kwargs): context = super(RegMunGenCapReDetailView, self).get_context_data( **kwargs) self.chart_session_store(context) return context
[docs] def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) wind = round(mun_data.gen_capacity_wind, 1) pv_roof = round(mun_data.gen_capacity_pv_roof_large, 1) pv_ground = round(mun_data.gen_capacity_pv_ground, 1) hydro = round(mun_data.gen_capacity_hydro, 1) bio = round(mun_data.gen_capacity_bio, 1) data = pd.DataFrame({ 'name': [str(_('Wind')), str(_('PV Dach, groß')), str(_('PV Freifläche')), str(_('Wasserkraft')), str(_('Bioenergie'))], 'y': [wind, pv_roof, pv_ground, hydro, bio] }) data.set_index('name', inplace=True) # Convert data to appropriate format for pie chart data = data.reset_index().to_dict(orient='records') setup_labels = { 'title': {'text': str(_('Installierte Leistung EE'))}, 'subtitle': {'text': str(_('nach Quelle'))}, 'plotOptions': { 'pie': { 'dataLabels': { 'format': '<b>{point.name}</b>: {point.y} \ MW<br>({point.percentage:.1f} %)', } } }, 'tooltip': { 'pointFormat': '<b>{point.name}</b>: {point.y} \ MW<br>({point.percentage:.1f} %)' } } chart = highcharts.HCPiechart( data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups' ) return chart
[docs]class RegMunGenCapReDensityDetailView(MasterDetailView): model = models.RegMunGenCapReDensity template_name = 'stemp_abw/popups/gen_cap_re_density.html'
[docs] def get_context_data(self, **kwargs): context = super(RegMunGenCapReDensityDetailView, self).get_context_data( **kwargs) self.chart_session_store(context) return context
[docs] def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) wind = round((mun_data.gen_capacity_wind / mun_data.area), 2) pv_roof = round((mun_data.gen_capacity_pv_roof_large / mun_data.area), 2) pv_ground = round((mun_data.gen_capacity_pv_ground / mun_data.area), 2) hydro = round((mun_data.gen_capacity_hydro / mun_data.area), 2) bio = round((mun_data.gen_capacity_bio / mun_data.area), 2) data = pd.DataFrame({ 'name': [str(_('Wind')), str(_('PV Dach, groß')), str(_('PV Freifläche')), str(_('Wasserkraft')), str(_('Bioenergie'))], 'y': [wind, pv_roof, pv_ground, hydro, bio] }) data.set_index('name', inplace=True) # Convert data to appropriate format for pie chart data = data.reset_index().to_dict(orient='records') setup_labels = { 'title': {'text': str(_('Installierte Leistung EE'))}, 'subtitle': {'text': str(_('je km²'))}, 'plotOptions': { 'pie': { 'dataLabels': { 'format': '<b>{point.name}</b>: {point.y} \ MW<br>({point.percentage:.1f} %)', } } }, 'tooltip': { 'pointFormat': '<b>{point.name}</b>: {point.y} \ MW<br>({point.percentage:.1f} %)' } } chart = highcharts.HCPiechart( data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups' ) return chart
[docs]class RegMunGenCountWindDensityDetailView(MasterDetailView): model = models.RegMunGenCountWindDensity template_name = 'stemp_abw/popups/gen_count_wind_density.html'
[docs]class RegMunDemElEnergyDetailView(MasterDetailView): model = models.RegMunDemElEnergy template_name = 'stemp_abw/popups/dem_el_energy.html'
[docs] def get_context_data(self, **kwargs): context = super(RegMunDemElEnergyDetailView, self).get_context_data( **kwargs) self.chart_session_store(context) return context
[docs] def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) hh = round((mun_data.dem_el_energy_hh / 1e3), 1) rca = round((mun_data.dem_el_energy_rca / 1e3), 1) ind = round((mun_data.dem_el_energy_ind / 1e3), 1) data = pd.DataFrame({ 'name': [str(_('Haushalte')), str(_('GHD und Landw.')), str(_('Industrie'))], 'y': [hh, rca, ind] }) data.set_index('name', inplace=True) # Convert data to appropriate format for pie chart data = data.reset_index().to_dict(orient='records') setup_labels = { 'title': {'text': str(_('Strombedarf'))}, 'subtitle': {'text': str(_('nach Verbrauchergruppe'))}, 'plotOptions': { 'pie': { 'dataLabels': { 'format': '<b>{point.name}</b>: {point.y} \ GWh<br>({point.percentage:.1f} %)', } } }, 'tooltip': { 'pointFormat': '<b>{point.name}</b>: {point.y} \ GWh<br>({point.percentage:.1f} %)' } } chart = highcharts.HCPiechart( data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups' ) return chart
[docs]class RegMunDemElEnergyPerCapitaDetailView(MasterDetailView): model = models.RegMunDemElEnergyPerCapita template_name = 'stemp_abw/popups/dem_el_energy_per_capita.html'
[docs] def get_context_data(self, **kwargs): context = super(RegMunDemElEnergyPerCapitaDetailView, self).get_context_data(**kwargs) self.chart_session_store(context) return context
[docs] def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) hh = round((mun_data.dem_el_energy_hh * 1000 / mun_data.pop_2017)) rca = round((mun_data.dem_el_energy_rca * 1000 / mun_data.pop_2017)) ind = round((mun_data.dem_el_energy_ind * 1000 / mun_data.pop_2017)) data = pd.DataFrame({ 'name': [str(_('Haushalte')), str(_('GHD und Landw.')), str(_('Industrie'))], 'y': [hh, rca, ind] }) data.set_index('name', inplace=True) # Convert data to appropriate format for pie chart data = data.reset_index().to_dict(orient='records') setup_labels = { 'title': {'text': str(_('Strombedarf'))}, 'subtitle': {'text': str(_('je EinwohnerIn nach Verbrauchergruppe'))}, 'plotOptions': { 'pie': { 'dataLabels': { 'format': '<b>{point.name}</b>: {point.y} \ KWh<br>({point.percentage:.1f} %)', } } }, 'tooltip': { 'pointFormat': '<b>{point.name}</b>: {point.y} \ KWh<br>({point.percentage:.1f} %)' } } chart = highcharts.HCPiechart( data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups' ) return chart
[docs]class RegMunDemThEnergyDetailView(MasterDetailView): model = models.RegMunDemThEnergy template_name = 'stemp_abw/popups/dem_th_energy.html'
[docs] def get_context_data(self, **kwargs): context = super(RegMunDemThEnergyDetailView, self).get_context_data( **kwargs) self.chart_session_store(context) return context
[docs] def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) hh = round((mun_data.dem_th_energy_hh / 1e3), 1) rca = round((mun_data.dem_th_energy_rca / 1e3), 1) data = pd.DataFrame({ 'name': [str(_('Haushalte')), str(_('GHD und Landw.'))], 'y': [hh, rca] }) data.set_index('name', inplace=True) # Convert data to appropriate format for pie chart data = data.reset_index().to_dict(orient='records') setup_labels = { 'title': {'text': str(_(' Wärmebedarf'))}, 'subtitle': {'text': str(_('nach Verbrauchergruppe'))}, 'plotOptions': { 'pie': { 'dataLabels': { 'format': '<b>{point.name}</b>: {point.y} \ GWh<br>({point.percentage:.1f} %)', } } }, 'tooltip': { 'pointFormat': '<b>{point.name}</b>: {point.y} \ GWh<br>({point.percentage:.1f} %)' } } chart = highcharts.HCPiechart( data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups' ) return chart
[docs]class RegMunDemThEnergyPerCapitaDetailView(MasterDetailView): model = models.RegMunDemThEnergyPerCapita template_name = 'stemp_abw/popups/dem_th_energy_per_capita.html'
[docs] def get_context_data(self, **kwargs): context = super(RegMunDemThEnergyPerCapitaDetailView, self).get_context_data(**kwargs) self.chart_session_store(context) return context
[docs] def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) hh = round((mun_data.dem_th_energy_hh * 1000 / mun_data.pop_2017)) rca = round((mun_data.dem_th_energy_rca * 1000 / mun_data.pop_2017)) data = pd.DataFrame({ 'name': [str(_('Haushalte')), str(_('GHD und Landw.'))], 'y': [hh, rca] }) data.set_index('name', inplace=True) # Convert data to appropriate format for pie chart data = data.reset_index().to_dict(orient='records') setup_labels = { 'title': {'text': str(_('Wärmebedarf'))}, 'subtitle': {'text': str(_('je EinwohnerIn nach Verbrauchergruppe'))}, 'plotOptions': { 'pie': { 'dataLabels': { 'format': '<b>{point.name}</b>: {point.y} \ KWh<br>({point.percentage:.1f} %)', } } }, 'tooltip': { 'pointFormat': '<b>{point.name}</b>: {point.y} \ KWh<br>({point.percentage:.1f} %)' } } chart = highcharts.HCPiechart( data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups' ) return chart
[docs]class RegWaterProtAreaDetailView(MasterDetailView): model = models.RegWaterProtArea
[docs]class RegBirdProtAreaDetailView(MasterDetailView): model = models.RegBirdProtArea
[docs]class RegBirdProtAreaB200DetailView(MasterDetailView): model = models.RegBirdProtAreaB200
[docs]class RegNatureProtAreaDetailView(MasterDetailView): model = models.RegNatureProtArea
[docs]class RegLandscProtAreaPartsDetailView(MasterDetailView): model = models.RegLandscProtAreaParts
[docs]class RegResidAreaDetailView(MasterDetailView): model = models.RegResidArea
[docs]class RegResidAreaB500DetailView(MasterDetailView): model = models.RegResidAreaB500
[docs]class RegPrioAreaFloodProtDetailView(MasterDetailView): model = models.RegPrioAreaFloodProt
[docs]class RegSurfaceWaterDetailView(MasterDetailView): model = models.RegSurfaceWater
[docs]class RegPrioAreaCultDetailView(MasterDetailView): model = models.RegPrioAreaCult
[docs]class RegForestDetailView(MasterDetailView): model = models.RegForest
[docs]class RegFFHProtAreaDetailView(MasterDetailView): model = models.RegFFHProtArea
[docs]class RegResidAreaB1000DetailView(MasterDetailView): model = models.RegResidAreaB1000
[docs]class GenWECDetailView(MasterDetailView): model = models.GenWEC
[docs]class GenPVGroundDetailView(MasterDetailView): model = models.GenPVGround
[docs]class RegPrioAreaWECDetailView(MasterDetailView): model = models.RegPrioAreaWEC
[docs]class RegDeadZoneHardDetailView(MasterDetailView): model = models.RegDeadZoneHard
[docs]class RegDeadZoneSoftDetailView(MasterDetailView): model = models.RegDeadZoneSoft
[docs]class RegFFHProtAreaBDetailView(MasterDetailView): model = models.RegFFHProtAreaB
[docs]class RegLandscProtAreaDetailView(MasterDetailView): model = models.RegLandscProtArea
[docs]class RegNatureParkDetailView(MasterDetailView): model = models.RegNaturePark
[docs]class RegBioReserveDetailView(MasterDetailView): model = models.RegBioReserve
[docs]class RegRetentAreaEcosysDetailView(MasterDetailView): model = models.RegRetentAreaEcosys
[docs]class RegPrioAreaNatureDetailView(MasterDetailView): model = models.RegPrioAreaNature
[docs]class RegNatureMonumDetailView(MasterDetailView): model = models.RegNatureMonum
[docs]class RegPrioAreaWaterDetailView(MasterDetailView): model = models.RegPrioAreaWater
[docs]class RegPrioAreaAgriDetailView(MasterDetailView): model = models.RegPrioAreaAgri
[docs]class RegRetentAreaAgriDetailView(MasterDetailView): model = models.RegRetentAreaAgri
[docs]class RegPrioAreaResDetailView(MasterDetailView): model = models.RegPrioAreaRes
[docs]class RegInfrasRailwayDetailView(MasterDetailView): model = models.RegInfrasRailway
[docs]class RegInfrasRoadDetailView(MasterDetailView): model = models.RegInfrasRoad
[docs]class RegInfrasHvgridDetailView(MasterDetailView): model = models.RegInfrasHvgrid
[docs]class RegInfrasAviationDetailView(MasterDetailView): model = models.RegInfrasAviation
####################### # RESULT DETAIL VIEWS # #######################
[docs]class RegMunEnergyReElDemShareResultDetailView(MasterDetailView): model = models.RegMunEnergyReElDemShareResult template_name = 'stemp_abw/popups/result_energy_re_el_dem_share.html'
[docs] def get_context_data(self, **kwargs): context = super(RegMunEnergyReElDemShareResultDetailView, self).get_context_data(**kwargs) self.chart_session_store(context) return context
[docs] def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) reg_mun_dem_el_energy = models.RegMunEnergyReElDemShareResult.objects.get( pk=self.kwargs['pk']) wind = round(((mun_data.gen_el_energy_wind / 1e3) / reg_mun_dem_el_energy.dem_el_energy) * 100, 1) pv_roof = round(((mun_data.gen_el_energy_pv_roof / 1e3) / reg_mun_dem_el_energy.dem_el_energy) * 100, 1) pv_ground = round(((mun_data.gen_el_energy_pv_ground / 1e3) / reg_mun_dem_el_energy.dem_el_energy) * 100, 1) hydro = round(((mun_data.gen_el_energy_hydro / 1e3) / reg_mun_dem_el_energy.dem_el_energy) * 100, 1) bio = round(((mun_data.gen_el_energy_bio / 1e3) / reg_mun_dem_el_energy.dem_el_energy) * 100, 1) data = pd.DataFrame(data={ 'EE-Träger': {str(_('Wind')): wind, str(_('PV Dach')): pv_roof, str(_('PV Freifläche')): pv_ground, str(_('Wasserkraft')): hydro, str(_('Bioenergie')): bio}}) setup_labels = { 'title': {'text': str(_('Ergebnis: EE-Erzeugung'))}, 'subtitle': {'text': str(_('in Prozent zum Strombedarf'))}, 'yAxis': {'title': {'text': str(_('Prozent'))}}, 'tooltip': { 'pointFormat': str(_('Bedarf: {point.stackTotal} %')) } } chart = highcharts.HCStackedColumn( data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups' ) return chart
[docs]class RegMunGenEnergyReResultDetailView(MasterDetailView): model = models.RegMunGenEnergyReResult template_name = 'stemp_abw/popups/result_gen_energy_re.html'
[docs] def get_context_data(self, **kwargs): context = super(RegMunGenEnergyReResultDetailView, self).get_context_data( **kwargs) self.chart_session_store(context) return context
[docs] def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) wind = round((mun_data.gen_el_energy_wind / 1e3), 1) pv_roof = round((mun_data.gen_el_energy_pv_roof / 1e3), 1) pv_ground = round((mun_data.gen_el_energy_pv_ground / 1e3), 1) hydro = round((mun_data.gen_el_energy_hydro / 1e3), 1) bio = round((mun_data.gen_el_energy_bio / 1e3), 1) data = pd.DataFrame({ 'name': [str(_('Wind')), str(_('PV Dach')), str(_('PV Freifläche')), str(_('Wasserkraft')), str(_('Bioenergie'))], 'y': [wind, pv_roof, pv_ground, hydro, bio] }) data.set_index('name', inplace=True) # Convert data to appropriate format for pie chart data = data.reset_index().to_dict(orient='records') setup_labels = { 'title': {'text': str(_('Ergebnis: Gewonnene Energie aus EE'))}, 'subtitle': {'text': str(_('nach Quelle'))}, 'plotOptions': { 'pie': { 'dataLabels': { 'format': '<b>{point.name}</b>: {point.y} \ GWh<br>({point.percentage:.1f} %)', } } }, 'tooltip': { 'pointFormat': '<b>{point.name}</b>: {point.y} \ GWh<br>({point.percentage:.1f} %)' } } chart = highcharts.HCPiechart( data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups' ) return chart
[docs]class RegMunGenEnergyReDensityResultDetailView(MasterDetailView): model = models.RegMunGenEnergyReDensityResult template_name = 'stemp_abw/popups/result_gen_energy_re_density.html'
[docs] def get_context_data(self, **kwargs): context = super(RegMunGenEnergyReDensityResultDetailView, self).get_context_data(**kwargs) self.chart_session_store(context) return context
[docs] def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) wind = round((mun_data.gen_el_energy_wind / mun_data.area), 1) pv_roof = round((mun_data.gen_el_energy_pv_roof / mun_data.area), 1) pv_ground = round((mun_data.gen_el_energy_pv_ground / mun_data.area), 1) hydro = round((mun_data.gen_el_energy_hydro / mun_data.area), 1) bio = round((mun_data.gen_el_energy_bio / mun_data.area), 1) data = pd.DataFrame({ 'name': [str(_('Wind')), str(_('PV Dach')), str(_('PV Freifläche')), str(_('Wasserkraft'))], 'y': [wind, pv_roof, pv_ground, hydro, bio] }) data.set_index('name', inplace=True) # Convert data to appropriate format for pie chart data = data.reset_index().to_dict(orient='records') setup_labels = { 'title': {'text': str(_('Ergebnis: Gewonnene Energie aus EE'))}, 'subtitle': {'text': str(_('je km²'))}, 'plotOptions': { 'pie': { 'dataLabels': { 'format': '<b>{point.name}</b>: {point.y} \ MWh<br>({point.percentage:.1f} %)', } } }, 'tooltip': { 'pointFormat': '<b>{point.name}</b>: {point.y} \ MWh<br>({point.percentage:.1f} %)' } } chart = highcharts.HCPiechart( data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups' ) return chart
[docs]class RegMunGenCapReResultDetailView(MasterDetailView): model = models.RegMunGenCapReResult template_name = 'stemp_abw/popups/result_gen_cap_re.html'
[docs] def get_context_data(self, **kwargs): context = super(RegMunGenCapReResultDetailView, self).get_context_data( **kwargs) self.chart_session_store(context) return context
[docs] def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) wind = round(mun_data.gen_capacity_wind, 1) pv_roof = round(mun_data.gen_capacity_pv_roof_large, 1) pv_ground = round(mun_data.gen_capacity_pv_ground, 1) hydro = round(mun_data.gen_capacity_hydro, 1) bio = round(mun_data.gen_capacity_bio, 1) data = pd.DataFrame({ 'name': [str(_('Wind')), str(_('PV Dach, groß')), str(_('PV Freifläche')), str(_('Wasserkraft')), str(_('Bioenergie'))], 'y': [wind, pv_roof, pv_ground, hydro, bio] }) data.set_index('name', inplace=True) # Convert data to appropriate format for pie chart data = data.reset_index().to_dict(orient='records') setup_labels = { 'title': {'text': str(_('Ergebnis: Installierte Leistung EE'))}, 'subtitle': {'text': str(_('nach Quelle'))}, 'plotOptions': { 'pie': { 'dataLabels': { 'format': '<b>{point.name}</b>: {point.y} \ MW<br>({point.percentage:.1f} %)', } } }, 'tooltip': { 'pointFormat': '<b>{point.name}</b>: {point.y} \ MW<br>({point.percentage:.1f} %)' } } chart = highcharts.HCPiechart( data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups' ) return chart
[docs]class RegMunGenCapReDensityResultDetailView(MasterDetailView): model = models.RegMunGenCapReDensityResult template_name = 'stemp_abw/popups/result_gen_cap_re_density.html'
[docs] def get_context_data(self, **kwargs): context = super(RegMunGenCapReDensityResultDetailView, self).get_context_data( **kwargs) self.chart_session_store(context) return context
[docs] def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) wind = round((mun_data.gen_capacity_wind / mun_data.area), 2) pv_roof = round((mun_data.gen_capacity_pv_roof_large / mun_data.area), 2) pv_ground = round((mun_data.gen_capacity_pv_ground / mun_data.area), 2) hydro = round((mun_data.gen_capacity_hydro / mun_data.area), 2) bio = round((mun_data.gen_capacity_bio / mun_data.area), 2) data = pd.DataFrame({ 'name': [str(_('Wind')), str(_('PV Dach, groß')), str(_('PV Freifläche')), str(_('Wasserkraft')), str(_('Bioenergie'))], 'y': [wind, pv_roof, pv_ground, hydro, bio] }) data.set_index('name', inplace=True) # Convert data to appropriate format for pie chart data = data.reset_index().to_dict(orient='records') setup_labels = { 'title': {'text': str(_('Ergebnis: Installierte Leistung EE'))}, 'subtitle': {'text': str(_('je km²'))}, 'plotOptions': { 'pie': { 'dataLabels': { 'format': '<b>{point.name}</b>: {point.y} \ MW<br>({point.percentage:.1f} %)', } } }, 'tooltip': { 'pointFormat': '<b>{point.name}</b>: {point.y} \ MW<br>({point.percentage:.1f} %)' } } chart = highcharts.HCPiechart( data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups' ) return chart
[docs]class RegMunGenCountWindDensityResultDetailView(MasterDetailView): model = models.RegMunGenCountWindDensityResult template_name = 'stemp_abw/popups/result_gen_count_wind_density.html'
[docs]class RegMunDemElEnergyResultDetailView(MasterDetailView): model = models.RegMunDemElEnergyResult template_name = 'stemp_abw/popups/result_dem_el_energy.html'
[docs] def get_context_data(self, **kwargs): context = super(RegMunDemElEnergyResultDetailView, self).get_context_data( **kwargs) self.chart_session_store(context) return context
[docs] def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) hh = round((mun_data.dem_el_energy_hh / 1e3), 1) rca = round((mun_data.dem_el_energy_rca / 1e3), 1) ind = round((mun_data.dem_el_energy_ind / 1e3), 1) data = pd.DataFrame({ 'name': [str(_('Haushalte')), str(_('GHD und Landw.')), str(_('Industrie'))], 'y': [hh, rca, ind] }) data.set_index('name', inplace=True) # Convert data to appropriate format for pie chart data = data.reset_index().to_dict(orient='records') setup_labels = { 'title': {'text': str(_('Ergebnis: Strombedarf'))}, 'subtitle': {'text': str(_('nach Verbrauchergruppe'))}, 'plotOptions': { 'pie': { 'dataLabels': { 'format': '<b>{point.name}</b>: {point.y} \ GWh<br>({point.percentage:.1f} %)', } } }, 'tooltip': { 'pointFormat': '<b>{point.name}</b>: {point.y} \ GWh<br>({point.percentage:.1f} %)' } } chart = highcharts.HCPiechart( data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups' ) return chart
[docs]class RegMunDemElEnergyPerCapitaResultDetailView(MasterDetailView): model = models.RegMunDemElEnergyPerCapitaResult template_name = 'stemp_abw/popups/result_dem_el_energy_per_capita.html'
[docs] def get_context_data(self, **kwargs): context = super(RegMunDemElEnergyPerCapitaResultDetailView, self).get_context_data(**kwargs) self.chart_session_store(context) return context
[docs] def build_chart(self): mun_data = models.MunData.objects.get(pk=self.kwargs['pk']) hh = round((mun_data.dem_el_energy_hh * 1000 / mun_data.pop_2017)) rca = round((mun_data.dem_el_energy_rca * 1000 / mun_data.pop_2017)) ind = round((mun_data.dem_el_energy_ind * 1000 / mun_data.pop_2017)) data = pd.DataFrame({ 'name': [str(_('Haushalte')), str(_('GHD und Landw.')), str(_('Industrie'))], 'y': [hh, rca, ind] }) data.set_index('name', inplace=True) # Convert data to appropriate format for pie chart data = data.reset_index().to_dict(orient='records') setup_labels = { 'title': {'text': str(_('Ergebnis: Strombedarf'))}, 'subtitle': {'text': str(_('je EinwohnerIn nach Verbrauchergruppe'))}, 'plotOptions': { 'pie': { 'dataLabels': { 'format': '<b>{point.name}</b>: {point.y} \ KWh<br>({point.percentage:.1f} %)', } } }, 'tooltip': { 'pointFormat': '<b>{point.name}</b>: {point.y} \ KWh<br>({point.percentage:.1f} %)' } } chart = highcharts.HCPiechart( data=data, setup_labels=setup_labels, style='display: inline-block', theme='popups' ) return chart