forked from 3wordchant/capsul-flask
ensure that app is defined in app.py to fix login link logging issues.
also shuffled some things around for cleanliness
This commit is contained in:
@ -24,9 +24,6 @@ from capsulflask.btcpay import client as btcpay
|
||||
from capsulflask.http_client import MyHTTPClient
|
||||
|
||||
|
||||
class StdoutMockFlaskMail:
|
||||
def send(self, message: Message):
|
||||
current_app.logger.info(f"Email would have been sent if configured:\n\nto: {','.join(message.recipients)}\nsubject: {message.subject}\nbody:\n\n{message.body}\n\n")
|
||||
|
||||
def create_app():
|
||||
|
||||
@ -100,30 +97,6 @@ def create_app():
|
||||
|
||||
app.config['HUB_URL'] = config.get("HUB_URL", app.config['BASE_URL'])
|
||||
|
||||
class SetLogLevelToDebugForHeartbeatRelatedMessagesFilter(logging.Filter):
|
||||
def isHeartbeatRelatedString(self, thing):
|
||||
# thing_string = "<error>"
|
||||
is_in_string = False
|
||||
try:
|
||||
thing_string = "%s" % thing
|
||||
is_in_string = 'heartbeat-task' in thing_string or 'hub/heartbeat' in thing_string or 'spoke/heartbeat' in thing_string
|
||||
except:
|
||||
pass
|
||||
# self.warning("isHeartbeatRelatedString(%s): %s", thing_string, is_in_string )
|
||||
return is_in_string
|
||||
|
||||
def filter(self, record):
|
||||
if app.config['LOG_LEVEL'] == "DEBUG":
|
||||
return True
|
||||
|
||||
if self.isHeartbeatRelatedString(record.msg):
|
||||
return False
|
||||
for arg in record.args:
|
||||
if self.isHeartbeatRelatedString(arg):
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
logging_dict_config({
|
||||
'version': 1,
|
||||
'formatters': {'default': {
|
||||
@ -244,30 +217,58 @@ if app.config['BTCPAY_URL'] != "":
|
||||
"""
|
||||
return dict(url_for=url_for_with_cache_bust)
|
||||
|
||||
|
||||
def url_for_with_cache_bust(endpoint, **values):
|
||||
"""
|
||||
Add a query parameter based on the hash of the file, this acts as a cache bust
|
||||
"""
|
||||
|
||||
if endpoint == 'static':
|
||||
filename = values.get('filename', None)
|
||||
if filename:
|
||||
if 'STATIC_FILE_HASH_CACHE' not in current_app.config:
|
||||
current_app.config['STATIC_FILE_HASH_CACHE'] = dict()
|
||||
|
||||
if filename not in current_app.config['STATIC_FILE_HASH_CACHE']:
|
||||
filepath = os.path.join(current_app.root_path, endpoint, filename)
|
||||
#print(filepath)
|
||||
if os.path.isfile(filepath) and os.access(filepath, os.R_OK):
|
||||
|
||||
with open(filepath, 'rb') as file:
|
||||
hasher = hashlib.md5()
|
||||
hasher.update(file.read())
|
||||
current_app.config['STATIC_FILE_HASH_CACHE'][filename] = hasher.hexdigest()[-6:]
|
||||
|
||||
values['q'] = current_app.config['STATIC_FILE_HASH_CACHE'][filename]
|
||||
|
||||
return url_for(endpoint, **values)
|
||||
|
||||
return app
|
||||
|
||||
|
||||
def url_for_with_cache_bust(endpoint, **values):
|
||||
"""
|
||||
Add a query parameter based on the hash of the file, this acts as a cache bust
|
||||
"""
|
||||
|
||||
if endpoint == 'static':
|
||||
filename = values.get('filename', None)
|
||||
if filename:
|
||||
if 'STATIC_FILE_HASH_CACHE' not in current_app.config:
|
||||
current_app.config['STATIC_FILE_HASH_CACHE'] = dict()
|
||||
|
||||
if filename not in current_app.config['STATIC_FILE_HASH_CACHE']:
|
||||
filepath = os.path.join(current_app.root_path, endpoint, filename)
|
||||
#print(filepath)
|
||||
if os.path.isfile(filepath) and os.access(filepath, os.R_OK):
|
||||
|
||||
with open(filepath, 'rb') as file:
|
||||
hasher = hashlib.md5()
|
||||
hasher.update(file.read())
|
||||
current_app.config['STATIC_FILE_HASH_CACHE'][filename] = hasher.hexdigest()[-6:]
|
||||
|
||||
values['q'] = current_app.config['STATIC_FILE_HASH_CACHE'][filename]
|
||||
|
||||
return url_for(endpoint, **values)
|
||||
|
||||
class StdoutMockFlaskMail:
|
||||
def send(self, message: Message):
|
||||
current_app.logger.info(f"Email would have been sent if configured:\n\nto: {','.join(message.recipients)}\nsubject: {message.subject}\nbody:\n\n{message.body}\n\n")
|
||||
|
||||
class SetLogLevelToDebugForHeartbeatRelatedMessagesFilter(logging.Filter):
|
||||
def isHeartbeatRelatedString(self, thing):
|
||||
# thing_string = "<error>"
|
||||
is_in_string = False
|
||||
try:
|
||||
thing_string = "%s" % thing
|
||||
is_in_string = 'heartbeat-task' in thing_string or 'hub/heartbeat' in thing_string or 'spoke/heartbeat' in thing_string
|
||||
except:
|
||||
pass
|
||||
# self.warning("isHeartbeatRelatedString(%s): %s", thing_string, is_in_string )
|
||||
return is_in_string
|
||||
|
||||
def filter(self, record):
|
||||
if not current_app or current_app.config['LOG_LEVEL'] == "DEBUG":
|
||||
return True
|
||||
|
||||
if self.isHeartbeatRelatedString(record.msg):
|
||||
return False
|
||||
for arg in record.args:
|
||||
if self.isHeartbeatRelatedString(arg):
|
||||
return False
|
||||
|
||||
return True
|
Reference in New Issue
Block a user