Hi,
I'm hoping somebody can point out what I'm doing wrong here, it's probably trivial but I'm tearing my hair out and have no idea where things are going wrong.
I have several stations and therefore several databases, so I wanted a version of the $alltime tag provided by the example stats.py or xstats.py that would take a data_binding. With some searching I came up with this
"""
"""
import weewx.units
from weewx.cheetahgenerator import SearchList
from weewx.tags import TimespanBinder, TimeBinder
from weeutil.weeutil import TimeSpan
class MyStats(SearchList):
def __init__(self, generator):
SearchList.__init__(self, generator)
def get_extension_list(self, timespan, db_lookup):
class DBBinder(TimeBinder):
# "alltime", with optional parameter data_binding
def alltime(self, data_binding=None):
return TimespanBinder(timespan,
self.db_lookup,
context='year',
data_binding=data_binding,
formatter=self.formatter,
converter=self.converter)
binder = DBBinder(db_lookup,
timespan,
self.generator.formatter,
self.generator.converter)
return [binder]
which works perfectly if the report is generated via wee_reports.
However it fails in the normal report run with:
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: Caught unrecoverable exception in generator 'weewx.cheetahgenerator.CheetahGenerator'
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: **** name 'weewx' is not defined
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: **** Traceback (most recent call last):
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: **** File "/weewx/package/weewx-4.1.0/bin/weewx/reportengine.py", line 197, in run
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: **** obj.start()
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: **** File "/weewx/package/weewx-4.1.0/bin/weewx/reportengine.py", line 280, in start
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: **** self.run()
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: **** File "/weewx/package/weewx-4.1.0/bin/weewx/cheetahgenerator.py", line 150, in run
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: **** ngen = self.generate(gen_dict[section_name], self.gen_ts)
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: **** File "/weewx/package/weewx-4.1.0/bin/weewx/cheetahgenerator.py", line 220, in generate
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: **** ngen += self.generate(section[subsection], gen_ts)
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: **** File "/weewx/package/weewx-4.1.0/bin/weewx/cheetahgenerator.py", line 220, in generate
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: **** ngen += self.generate(section[subsection], gen_ts)
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: **** File "/weewx/package/weewx-4.1.0/bin/weewx/cheetahgenerator.py", line 308, in generate
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: **** searchList = self._getSearchList(encoding, timespan,
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: **** File "/weewx/package/weewx-4.1.0/bin/weewx/cheetahgenerator.py", line 376, in _getSearchList
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: **** searchList += obj.get_extension_list(timespan, db_lookup)
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: **** File "/weewx/package/weewx-4.1.0/bin/user/mstats.py", line 18, in get_extension_list
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: **** NameError: name 'weewx' is not defined
Jul 26 09:50:17 bee weewx-weewx[192470] ERROR weewx.reportengine: **** Generator terminated
Jul 26 09:50:17 bee weewx-weewx[192470] INFO weewx.reportengine: Copied 0 files to /weewx/www/live
Other than this problem my weewx config is quite happy and the other extensions are working fine so I don't think there is anything fundamentally wrong with my setup even though it is in a non-standard location.
Any pointers very gratefully received.
Best
Mike