Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/source/configuration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,11 @@ output in color, as well as HTML e-mail using ``sendmail``:
report:
text:
details: true
title_format: location
footer: true
line_length: 75
html:
title_format: pretty
diff: unified
separate: true
email:
Expand Down
1 change: 1 addition & 0 deletions docs/source/reporters.rst
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,7 @@ public Matrix room, as the messages quickly become noisy:

markdown:
details: false
title_format: pretty
footer: false
minimal: true
enabled: true
Expand Down
80 changes: 63 additions & 17 deletions lib/urlwatch/reporters.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,8 +177,6 @@ def submit(self):
yield from (str(part) for part in self._parts())

def _parts(self):
cfg = self.get_base_config(self.report)

yield SafeHtml("""<!DOCTYPE html>
<html><head>
<title>urlwatch</title>
Expand Down Expand Up @@ -217,15 +215,27 @@ def _parts(self):
</head><body>
""")

cfg = self.get_base_config(self.report)
title_format = cfg.get('title_format', 'default')

if title_format not in ("default", "location", "pretty"):
logger.warn(f'Invalid title format {title_format!r}, falling back to "default".')
title_format = "default"

for job_state in self.report.get_filtered_job_states(self.job_states):
job = job_state.job

if job.location_is_url():
title = '<a href="{location}">{pretty_name}</a>'
elif job.pretty_name() != job.get_location():
title = '<span title="{location}">{pretty_name}</span>'
else:
elif title_format == "location":
title = '{location}'
elif title_format == "pretty":
title = '{pretty_name}'
else: # default
if job.pretty_name() != job.get_location():
title = '<span title="{location}">{pretty_name}</span>'
else:
title = '{location}'
title = '<h2><span class="verb">{verb}:</span> ' + title + '</h2>'

yield SafeHtml(title).format(verb=job_state.verb,
Expand Down Expand Up @@ -292,14 +302,24 @@ def submit(self):
line_length = cfg['line_length']
show_details = cfg['details']
show_footer = cfg['footer']
title_format = cfg.get('title_format', 'default')

if title_format not in ("default", "location", "pretty"):
logger.warn(f'Invalid title format {title_format!r}, falling back to "default".')
title_format = "default"

if cfg['minimal']:
for job_state in self.report.get_filtered_job_states(self.job_states):
pretty_name = job_state.job.pretty_name()
location = job_state.job.get_location()
if pretty_name != location:
location = '%s ( %s )' % (pretty_name, location)
yield ': '.join((job_state.verb.upper(), location))
if title_format == "location":
title = location
elif title_format == "pretty":
title = pretty_name
else: # default
if pretty_name != location:
title = '%s ( %s )' % (pretty_name, location)
yield ': '.join((job_state.verb.upper(), title))
return

summary = []
Expand Down Expand Up @@ -337,16 +357,24 @@ def _format_content(self, job_state):
return job_state.get_diff()

def _format_output(self, job_state, line_length):
cfg = self.get_base_config(self.report)
title_format = cfg.get('title_format', 'default')

summary_part = []
details_part = []

pretty_name = job_state.job.pretty_name()
location = job_state.job.get_location()
if pretty_name != location:
location = '%s ( %s )' % (pretty_name, location)
if title_format == "location":
title = location
elif title_format == "pretty":
title = pretty_name
else: # default
if pretty_name != location:
title = '%s ( %s )' % (pretty_name, location)

pretty_summary = ': '.join((job_state.verb.upper(), pretty_name))
summary = ': '.join((job_state.verb.upper(), location))
summary = ': '.join((job_state.verb.upper(), title))
content = self._format_content(job_state)

summary_part.append(pretty_summary)
Expand Down Expand Up @@ -798,14 +826,24 @@ def submit(self, max_length=None):
cfg = self.get_base_config(self.report)
show_details = cfg['details']
show_footer = cfg['footer']
title_format = cfg.get('title_format', 'default')

if title_format not in ("default", "location", "pretty"):
logger.warn(f'Invalid title format {title_format!r}, falling back to "default".')
title_format = "default"

if cfg['minimal']:
for job_state in self.report.get_filtered_job_states(self.job_states):
pretty_name = job_state.job.pretty_name()
location = job_state.job.get_location()
if pretty_name != location:
location = '%s (%s)' % (pretty_name, location)
yield '* ' + ': '.join((job_state.verb.upper(), location))
if title_format == "location":
title = location
elif title_format == "pretty":
title = pretty_name
else: # default
if pretty_name != location:
title = '%s (%s)' % (pretty_name, location)
yield '* ' + ': '.join((job_state.verb.upper(), title))
return

summary = []
Expand Down Expand Up @@ -964,16 +1002,24 @@ def _format_content(self, job_state):
return job_state.get_diff()

def _format_output(self, job_state):
cfg = self.get_base_config(self.report)
title_format = cfg.get('title_format', 'default')

summary_part = []
details_part = []

pretty_name = job_state.job.pretty_name()
location = job_state.job.get_location()
if pretty_name != location:
location = '%s (%s)' % (pretty_name, location)
if title_format == "location":
title = location
elif title_format == "pretty":
title = pretty_name
else: # default
if pretty_name != location:
title = '%s (%s)' % (pretty_name, location)

pretty_summary = ': '.join((job_state.verb.upper(), pretty_name))
summary = ': '.join((job_state.verb.upper(), location))
summary = ': '.join((job_state.verb.upper(), title))
content = self._format_content(job_state)

summary_part.append(pretty_summary)
Expand Down
3 changes: 3 additions & 0 deletions lib/urlwatch/storage.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,18 +76,21 @@
'footer': True,
'minimal': False,
'separate': False,
'title_format': 'default',
},

'markdown': {
'details': True,
'footer': True,
'minimal': False,
'separate': False,
'title_format': 'default',
},

'html': {
'diff': 'unified', # "unified" or "table"
'separate': False,
'title_format': 'default',
},

'stdout': {
Expand Down