def html(self, identifiers=None, layout_options=None): """ Popup with graph - table - bargraph. """ add_snippet = layout_options.get('add_snippet', False) parameter_name = self.jdbc_source.get_parameter_name(self.parameterkey) # Make table with given identifiers. # Layer options contain request - not the best way but it works. start_date, end_date = current_start_end_dates( layout_options['request']) # Convert start and end dates to utc. start_date_utc, end_date_utc = self._to_utc(start_date, end_date) td_windows = [datetime.timedelta(days=2), datetime.timedelta(days=1), datetime.timedelta(hours=3), datetime.timedelta(hours=1)] info = [] symbol_url = self.symbol_url() for identifier in identifiers: image_graph_url = self.workspace_mixin_item.url("lizard_map_adapter_image", (identifier,)) flot_graph_data_url = self.workspace_mixin_item.url("lizard_map_adapter_flot_graph_data", (identifier,)) values = self._cached_values(identifier, start_date_utc, end_date_utc) area_m2 = GeoObject.objects.get( municipality_id=identifier['location'], config=self.rainapp_config).geometry.area area_km2 = meter_square_to_km_square(area_m2) period_summary_row = { 'max': sum([v['value'] for v in values]), 'start': start_date, 'end': end_date, 'delta': (end_date - start_date).days, 't': self._t_to_string(None), } infoname = '%s, %s' % (self._get_location_name(identifier), parameter_name) info.append({ 'identifier': identifier, 'identifier_json': json.dumps(identifier).replace('"', '%22'), 'shortname': infoname, 'name': infoname, 'location': self._get_location_name(identifier), 'period_summary_row': period_summary_row, 'table': [self.rain_stats(values, area_km2, td_window, start_date_utc, end_date_utc) for td_window in td_windows], 'image_graph_url': image_graph_url, 'flot_graph_data_url': flot_graph_data_url, 'url': self.workspace_mixin_item.url( "lizard_map_adapter_values", [identifier, ], extra_kwargs={'output_type': 'csv'}), 'workspace_item': self.workspace_mixin_item, 'adapter': self }) return render_to_string( 'lizard_rainapp/popup_rainapp.html', { 'title': parameter_name, 'symbol_url': symbol_url, 'add_snippet': add_snippet, 'workspace_item': self.workspace_item, 'info': info } )
def test_meter_square_to_km_square(self): """Test area conversion.""" self.assertAlmostEqual(5.2, meter_square_to_km_square(5.2 * pow(10, 6)))