mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-11 15:56:07 -07:00
Add URL to retrieve latest scheduled newsletter
This commit is contained in:
parent
76122bea5d
commit
8af697a157
4 changed files with 42 additions and 16 deletions
|
@ -525,7 +525,9 @@ NEWSLETTER_PARAMETERS = [
|
||||||
{'name': 'Newsletter Time Frame', 'type': 'int', 'value': 'newsletter_time_frame', 'description': 'The time frame included in the newsletter.'},
|
{'name': 'Newsletter Time Frame', 'type': 'int', 'value': 'newsletter_time_frame', 'description': 'The time frame included in the newsletter.'},
|
||||||
{'name': 'Newsletter Time Frame Units', 'type': 'str', 'value': 'newsletter_time_frame_units', 'description': 'The time frame units included in the newsletter.'},
|
{'name': 'Newsletter Time Frame Units', 'type': 'str', 'value': 'newsletter_time_frame_units', 'description': 'The time frame units included in the newsletter.'},
|
||||||
{'name': 'Newsletter URL', 'type': 'str', 'value': 'newsletter_url', 'description': 'The self-hosted URL to the newsletter.'},
|
{'name': 'Newsletter URL', 'type': 'str', 'value': 'newsletter_url', 'description': 'The self-hosted URL to the newsletter.'},
|
||||||
|
{'name': 'Newsletter Latest URL', 'type': 'str', 'value': 'newsletter_latest_url', 'description': 'The self-hosted URL to the latest scheduled newsletter for the agent.'},
|
||||||
{'name': 'Newsletter UUID', 'type': 'str', 'value': 'newsletter_uuid', 'description': 'The unique identifier for the newsletter.'},
|
{'name': 'Newsletter UUID', 'type': 'str', 'value': 'newsletter_uuid', 'description': 'The unique identifier for the newsletter.'},
|
||||||
|
{'name': 'Newsletter ID', 'type': 'int', 'value': 'newsletter_id', 'description': 'The ID number for the newsletter agent.'},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -86,7 +86,8 @@ def notify(newsletter_id=None, notify_action=None, **kwargs):
|
||||||
body = newsletter_config['body']
|
body = newsletter_config['body']
|
||||||
message = newsletter_config['message']
|
message = newsletter_config['message']
|
||||||
|
|
||||||
newsletter_agent = newsletters.get_agent_class(agent_id=newsletter_config['agent_id'],
|
newsletter_agent = newsletters.get_agent_class(newsletter_id=newsletter_id,
|
||||||
|
agent_id=newsletter_config['agent_id'],
|
||||||
config=newsletter_config['config'],
|
config=newsletter_config['config'],
|
||||||
email_config=newsletter_config['email_config'],
|
email_config=newsletter_config['email_config'],
|
||||||
subject=subject,
|
subject=subject,
|
||||||
|
@ -149,13 +150,22 @@ def set_notify_success(newsletter_log_id):
|
||||||
db.upsert(table_name='newsletter_log', key_dict=keys, value_dict=values)
|
db.upsert(table_name='newsletter_log', key_dict=keys, value_dict=values)
|
||||||
|
|
||||||
|
|
||||||
def get_newsletter(newsletter_uuid):
|
def get_newsletter(newsletter_uuid=None, newsletter_id=None):
|
||||||
db = database.MonitorDatabase()
|
db = database.MonitorDatabase()
|
||||||
result = db.select_single('SELECT newsletter_id, start_date, end_date FROM newsletter_log '
|
|
||||||
|
if newsletter_uuid:
|
||||||
|
result = db.select_single('SELECT newsletter_id, start_date, end_date, uuid, filename FROM newsletter_log '
|
||||||
'WHERE uuid = ?', [newsletter_uuid])
|
'WHERE uuid = ?', [newsletter_uuid])
|
||||||
|
elif newsletter_id:
|
||||||
|
result = db.select_single('SELECT newsletter_id, start_date, end_date, uuid, filename FROM newsletter_log '
|
||||||
|
'WHERE newsletter_id = ? AND notify_action != "test" '
|
||||||
|
'ORDER BY timestamp DESC LIMIT 1', [newsletter_id])
|
||||||
|
else:
|
||||||
|
result = None
|
||||||
|
|
||||||
if result:
|
if result:
|
||||||
newsletter_id = result['newsletter_id']
|
newsletter_id = result['newsletter_id']
|
||||||
|
newsletter_uuid = result['uuid']
|
||||||
start_date = result['start_date']
|
start_date = result['start_date']
|
||||||
end_date = result['end_date']
|
end_date = result['end_date']
|
||||||
|
|
||||||
|
|
|
@ -63,12 +63,13 @@ def available_notification_actions():
|
||||||
return actions
|
return actions
|
||||||
|
|
||||||
|
|
||||||
def get_agent_class(agent_id=None, config=None, email_config=None, start_date=None, end_date=None,
|
def get_agent_class(newsletter_id=None, agent_id=None, config=None, email_config=None, start_date=None, end_date=None,
|
||||||
subject=None, body=None, message=None):
|
subject=None, body=None, message=None):
|
||||||
if str(agent_id).isdigit():
|
if str(agent_id).isdigit():
|
||||||
agent_id = int(agent_id)
|
agent_id = int(agent_id)
|
||||||
|
|
||||||
kwargs = {'config': config,
|
kwargs = {'newsletter_id': newsletter_id,
|
||||||
|
'config': config,
|
||||||
'email_config': email_config,
|
'email_config': email_config,
|
||||||
'start_date': start_date,
|
'start_date': start_date,
|
||||||
'end_date': end_date,
|
'end_date': end_date,
|
||||||
|
@ -138,7 +139,8 @@ def get_newsletter_config(newsletter_id=None):
|
||||||
subject = result.pop('subject')
|
subject = result.pop('subject')
|
||||||
body = result.pop('body')
|
body = result.pop('body')
|
||||||
message = result.pop('message')
|
message = result.pop('message')
|
||||||
newsletter_agent = get_agent_class(agent_id=result['agent_id'], config=config, email_config=email_config,
|
newsletter_agent = get_agent_class(newsletter_id=newsletter_id, agent_id=result['agent_id'],
|
||||||
|
config=config, email_config=email_config,
|
||||||
subject=subject, body=body, message=message)
|
subject=subject, body=body, message=message)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(u"Tautulli Newsletters :: Failed to get newsletter config options: %s." % e)
|
logger.error(u"Tautulli Newsletters :: Failed to get newsletter config options: %s." % e)
|
||||||
|
@ -223,7 +225,8 @@ def set_newsletter_config(newsletter_id=None, agent_id=None, **kwargs):
|
||||||
body = kwargs.pop('body')
|
body = kwargs.pop('body')
|
||||||
message = kwargs.pop('message')
|
message = kwargs.pop('message')
|
||||||
|
|
||||||
agent_class = get_agent_class(agent_id=agent['id'], config=newsletter_config, email_config=email_config,
|
agent_class = get_agent_class(newsletter_id=newsletter_id, agent_id=agent['id'],
|
||||||
|
config=newsletter_config, email_config=email_config,
|
||||||
subject=subject, body=body, message=message)
|
subject=subject, body=body, message=message)
|
||||||
|
|
||||||
keys = {'id': newsletter_id}
|
keys = {'id': newsletter_id}
|
||||||
|
@ -312,12 +315,13 @@ class Newsletter(object):
|
||||||
_TEMPLATE_MASTER = ''
|
_TEMPLATE_MASTER = ''
|
||||||
_TEMPLATE = ''
|
_TEMPLATE = ''
|
||||||
|
|
||||||
def __init__(self, config=None, email_config=None, start_date=None, end_date=None,
|
def __init__(self, newsletter_id=None, config=None, email_config=None, start_date=None, end_date=None,
|
||||||
subject=None, body=None, message=None):
|
subject=None, body=None, message=None):
|
||||||
self.config = self.set_config(config=config, default=self._DEFAULT_CONFIG)
|
self.config = self.set_config(config=config, default=self._DEFAULT_CONFIG)
|
||||||
self.email_config = self.set_config(config=email_config, default=self._DEFAULT_EMAIL_CONFIG)
|
self.email_config = self.set_config(config=email_config, default=self._DEFAULT_EMAIL_CONFIG)
|
||||||
self.uuid = generate_newsletter_uuid()
|
self.uuid = generate_newsletter_uuid()
|
||||||
|
|
||||||
|
self.newsletter_id = newsletter_id
|
||||||
self.start_date = None
|
self.start_date = None
|
||||||
self.end_date = None
|
self.end_date = None
|
||||||
|
|
||||||
|
@ -479,9 +483,9 @@ class Newsletter(object):
|
||||||
date_format = helpers.momentjs_to_arrow(plexpy.CONFIG.DATE_FORMAT)
|
date_format = helpers.momentjs_to_arrow(plexpy.CONFIG.DATE_FORMAT)
|
||||||
|
|
||||||
if plexpy.CONFIG.NEWSLETTER_SELF_HOSTED and plexpy.CONFIG.HTTP_BASE_URL:
|
if plexpy.CONFIG.NEWSLETTER_SELF_HOSTED and plexpy.CONFIG.HTTP_BASE_URL:
|
||||||
base_url = plexpy.CONFIG.HTTP_BASE_URL + plexpy.HTTP_ROOT
|
base_url = plexpy.CONFIG.HTTP_BASE_URL + plexpy.HTTP_ROOT + 'newsletter/'
|
||||||
else:
|
else:
|
||||||
base_url = helpers.get_plexpy_url() + '/'
|
base_url = helpers.get_plexpy_url() + '/newsletter/'
|
||||||
|
|
||||||
parameters = {
|
parameters = {
|
||||||
'server_name': plexpy.CONFIG.PMS_NAME,
|
'server_name': plexpy.CONFIG.PMS_NAME,
|
||||||
|
@ -490,8 +494,10 @@ class Newsletter(object):
|
||||||
'week_number': self.start_date.isocalendar()[1],
|
'week_number': self.start_date.isocalendar()[1],
|
||||||
'newsletter_time_frame': self.config['time_frame'],
|
'newsletter_time_frame': self.config['time_frame'],
|
||||||
'newsletter_time_frame_units': self.config['time_frame_units'],
|
'newsletter_time_frame_units': self.config['time_frame_units'],
|
||||||
'newsletter_url': base_url + 'newsletter/' + self.uuid,
|
'newsletter_url': base_url + self.uuid,
|
||||||
'newsletter_uuid': self.uuid
|
'newsletter_latest_url': base_url + 'id/' + str(self.newsletter_id),
|
||||||
|
'newsletter_uuid': self.uuid,
|
||||||
|
'newsletter_id': self.newsletter_id
|
||||||
}
|
}
|
||||||
|
|
||||||
return parameters
|
return parameters
|
||||||
|
|
|
@ -5665,8 +5665,15 @@ class WebInterface(object):
|
||||||
cherrypy.response.headers['Cache-Control'] = 'max-age=2592000' # 30 days
|
cherrypy.response.headers['Cache-Control'] = 'max-age=2592000' # 30 days
|
||||||
return self.image(args[1], refresh=True)
|
return self.image(args[1], refresh=True)
|
||||||
|
|
||||||
|
if len(args) >= 2 and args[0] == 'id':
|
||||||
|
newsletter_id = args[1]
|
||||||
|
newsletter_uuid = None
|
||||||
|
else:
|
||||||
|
newsletter_id = None
|
||||||
newsletter_uuid = args[0]
|
newsletter_uuid = args[0]
|
||||||
newsletter = newsletter_handler.get_newsletter(newsletter_uuid=newsletter_uuid)
|
|
||||||
|
newsletter = newsletter_handler.get_newsletter(newsletter_uuid=newsletter_uuid,
|
||||||
|
newsletter_id=newsletter_id)
|
||||||
return newsletter
|
return newsletter
|
||||||
|
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
|
@ -5685,7 +5692,8 @@ class WebInterface(object):
|
||||||
newsletter = newsletters.get_newsletter_config(newsletter_id=newsletter_id)
|
newsletter = newsletters.get_newsletter_config(newsletter_id=newsletter_id)
|
||||||
|
|
||||||
if newsletter:
|
if newsletter:
|
||||||
newsletter_agent = newsletters.get_agent_class(agent_id=newsletter['agent_id'],
|
newsletter_agent = newsletters.get_agent_class(newsletter_id=newsletter_id,
|
||||||
|
agent_id=newsletter['agent_id'],
|
||||||
config=newsletter['config'],
|
config=newsletter['config'],
|
||||||
start_date=start_date,
|
start_date=start_date,
|
||||||
end_date=end_date,
|
end_date=end_date,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue