@@ -27,7 +27,10 @@ class ForecastSetting(ClusterableModel, BaseSiteSetting):
2727 related_name = "weather_reports_page" )
2828 show_conditions_label_on_widget = models .BooleanField (default = True ,
2929 verbose_name = _ ("Show conditions label on widget" ))
30-
30+
31+ use_period_labels = models .BooleanField (default = False ,
32+ verbose_name = _ ("Use Period Labels inplace of forecast time" ), )
33+
3134 edit_handler = TabbedInterface ([
3235 ObjectList ([
3336 InlinePanel ('periods' , heading = _ ("Forecast Periods" ), label = _ ("Forecast Period" )),
@@ -45,10 +48,11 @@ class ForecastSetting(ClusterableModel, BaseSiteSetting):
4548 FieldPanel ('default_city' ),
4649 FieldPanel ('weather_detail_page' ),
4750 FieldPanel ('weather_reports_page' ),
51+ FieldPanel ('use_period_labels' ),
4852 FieldPanel ('show_conditions_label_on_widget' ),
4953 ], heading = _ ("Other Settings" )),
5054 ])
51-
55+
5256 @cached_property
5357 def data_parameter_values (self ):
5458 data_parameters = self .data_parameters .all ()
@@ -57,17 +61,17 @@ def data_parameter_values(self):
5761 params .append ({"parameter" : param .parameter , "name" : param .name , "parameter_type" : param .parameter_type ,
5862 "parameter_unit" : param .parameter_unit if param .parameter_unit else " " })
5963 return params
60-
64+
6165 @property
6266 def periods_as_choices (self ):
6367 return [(period .id , period .label ) for period in self .periods .all ()]
64-
68+
6569 @property
6670 def effective_periods (self ):
6771 return [
6872 {"label" : period .label , "time" : period .forecast_effective_time }
6973 for period in self .periods .all ()]
70-
74+
7175 @property
7276 def weather_conditions_list (self ):
7377 weather_conditions = self .weather_conditions .all ()
@@ -78,15 +82,15 @@ class ForecastPeriod(Orderable):
7882 parent = ParentalKey (ForecastSetting , on_delete = models .CASCADE , related_name = "periods" )
7983 forecast_effective_time = models .TimeField (verbose_name = _ ("Forecast Effective Time" ), unique = True )
8084 label = models .CharField (max_length = 100 , verbose_name = _ ("Label" ))
81-
85+
8286 class Meta :
8387 ordering = ["forecast_effective_time" ]
84-
88+
8589 panels = [
8690 FieldPanel ('forecast_effective_time' ),
8791 FieldPanel ('label' ),
8892 ]
89-
93+
9094 def __str__ (self ):
9195 return self .label
9296
@@ -106,7 +110,7 @@ class ForecastDataParameters(Orderable):
106110 parameter_unit = models .CharField (_ ("Unit of measurement" ), max_length = 100 , null = True , blank = True ,
107111 help_text = "e.g °C, %, mm, hPa, etc " )
108112 show_on_home_widget = models .BooleanField (default = True , verbose_name = _ ("Show on Home Widget" ))
109-
113+
110114 panels = [
111115 FieldPanel ('use_known_parameters' ),
112116 FieldPanel ('parameter' , widget = DataParameterWidget ),
@@ -115,24 +119,24 @@ class ForecastDataParameters(Orderable):
115119 FieldPanel ('parameter_unit' ),
116120 FieldPanel ('show_on_home_widget' ),
117121 ]
118-
122+
119123 def __str__ (self ):
120124 return self .name
121-
125+
122126 @property
123127 def units (self ):
124128 if self .parameter_unit :
125129 return self .parameter_unit
126-
130+
127131 if self .parameter_info :
128132 return self .parameter_info .get ("units" )
129-
133+
130134 return None
131-
135+
132136 @property
133137 def parameter_info (self ):
134138 return WEATHER_PARAMETERS_AS_DICT .get (self .parameter )
135-
139+
136140 def parse_value (self , value ):
137141 if self .parameter_type == "numeric" :
138142 return float (value )
@@ -144,16 +148,16 @@ class WeatherCondition(Orderable):
144148 symbol = models .CharField (max_length = 100 , verbose_name = _ ("Weather Symbol" ))
145149 label = models .CharField (max_length = 100 , unique = True , verbose_name = _ ("Label" ))
146150 alias = models .CharField (max_length = 100 , blank = True , null = True , unique = True , verbose_name = _ ("Alias" ))
147-
151+
148152 panels = [
149153 FieldPanel ('symbol' , widget = WeatherSymbolChooserWidget ),
150154 FieldPanel ('label' ),
151155 FieldPanel ('alias' ),
152156 ]
153-
157+
154158 def __str__ (self ):
155159 return self .label
156-
160+
157161 @property
158162 def icon_url (self ):
159163 return static ('forecastmanager/weathericons/{}.png' .format (self .symbol ))
0 commit comments