def get_context_data(self, **kwargs): odczyty = Odczyty.objects.all().order_by( '-id')[:settings.ILOSC_ODCZYTOW] odczyty = list(reversed(odczyty)) odczyty_50 = Odczyty_50.objects.all().order_by('-id')[:50] odczyty_50 = list(reversed(odczyty_50)) odczyty_10 = Odczyty_10.objects.all().order_by('-id')[:10] odczyty_10 = list(reversed(odczyty_10)) lista_dat = [] for i in odczyty: lista_dat.append(i.data_odczytu) for i in odczyty_10: if not i.data_odczytu in lista_dat: lista_dat.append(i.data_odczytu) for i in odczyty_50: if not i.data_odczytu in lista_dat: lista_dat.append(i.data_odczytu) data = [] abs_50 = [] abs_10 = [] for i in lista_dat: odczyt_1 = None odczyt_2 = None odczyt_3 = None data2 = i.strftime('%H:%M') for o1 in odczyty: if i == o1.data_odczytu: odczyt_1 = o1.temperatura for o2 in odczyty_10: if i == o2.data_odczytu: odczyt_2 = o2.temperatura for o3 in odczyty_50: if i == o3.data_odczytu: odczyt_3 = o3.temperatura data.append([data2, odczyt_1, odczyt_2, odczyt_3]) if odczyt_1 != None and odczyt_2 != None: abs = math.fabs(odczyt_1 - odczyt_2) abs_10.append(abs) if odczyt_1 != None and odczyt_3 != None: abs = math.fabs(odczyt_1 - odczyt_3) abs_50.append(abs) data = data[settings.ILOSC_ODCZYTOW * -1:] data2 = [ ['Data', 'Odczyty', 'Algorytm dla 10', 'Algorytm dla 50'], ] data = data2 + data # DataSource object data_source = SimpleDataSource(data=data) # Chart object chart = LineChart(data_source) chart.width = settings.SZEROKOSC chart.height = settings.WYSOKOSC chart.options['title'] = "Temperatura [°C]" chart.options['pointSize'] = settings.POINT_SIZE context = {'chart': chart} context['title'] = self.title # print(chart.as_html()) context['MAE_10'] = MAE(abs_10) context['RMSE_10'] = RMSE(abs_10) context['MAE_50'] = MAE(abs_50) context['RMSE_50'] = RMSE(abs_50) if self.request.method == 'GET': context['ilosc'] = len(Odczyty.objects.all()) else: context['ilosc'] = 0 print(dir(django.db.backends.mysql)) return context
def get_context_data(self, **kwargs): odczyty = Odczyty.objects.all().order_by( '-id')[:settings.ILOSC_ODCZYTOW] odczyty = list(reversed(odczyty)) odczyty_50 = Odczyty_50.objects.all().order_by('-id')[:50] odczyty_50 = list(reversed(odczyty_50)) odczyty_10 = Odczyty_10.objects.all().order_by('-id')[:10] odczyty_10 = list(reversed(odczyty_10)) lista_dat = [] for i in odczyty: lista_dat.append(i.data_odczytu) for i in odczyty_10: if not i.data_odczytu in lista_dat: lista_dat.append(i.data_odczytu) for i in odczyty_50: if not i.data_odczytu in lista_dat: lista_dat.append(i.data_odczytu) data = [] abs_50 = [] abs_10 = [] for i in lista_dat: odczyt_1 = None odczyt_2 = None odczyt_3 = None data2 = i.strftime('%H:%M') for o1 in odczyty: if i == o1.data_odczytu: odczyt_1 = o1.cisnienie for o2 in odczyty_10: if i == o2.data_odczytu: odczyt_2 = o2.cisnienie for o3 in odczyty_50: if i == o3.data_odczytu: odczyt_3 = o3.cisnienie data.append([data2, odczyt_1, odczyt_2, odczyt_3]) if odczyt_1 != None and odczyt_2 != None: abs = math.fabs(odczyt_1 - odczyt_2) abs_10.append(abs) if odczyt_1 != None and odczyt_3 != None: abs = math.fabs(odczyt_1 - odczyt_3) abs_50.append(abs) print(len(data)) data = data[settings.ILOSC_ODCZYTOW * -1:] data2 = [ ['Data', 'Odczyty', 'Algorytm dla 10', 'Algorytm dla 50'], ] data = data2 + data # DataSource object data_source = SimpleDataSource(data=data) # Chart object chart = LineChart(data_source) chart.width = settings.SZEROKOSC chart.height = settings.WYSOKOSC chart.options['title'] = "Ciśnienie [hPa]" chart.options['pointSize'] = settings.POINT_SIZE context = {'chart': chart} context['title'] = self.title context['MAE_10'] = MAE(abs_10) context['RMSE_10'] = RMSE(abs_10) context['MAE_50'] = MAE(abs_50) context['RMSE_50'] = RMSE(abs_50) return context